【发布时间】:2014-04-18 01:10:10
【问题描述】:
我想实现一个通用的IEnumerator<T> 扩展方法,它返回IEnumerable 中的下一个元素,如下所示:
var list = new List<MyClass>();
var enumerator = list.GetEnumerator();
var nextItem1 = enumerator.GetNext();
var nextItem2 = enumerator.GetNext();
// Instead of calling enumerator.MoveNext() and then reading the current item.
我试图这样做,但它不会编译:
public static T GetNext(this IEnumerator<T> list)
{
list.MoveNext();
return list.Current;
}
我哪里做错了?谢谢。
【问题讨论】:
-
你得到什么编译器错误?仅仅说您的代码无法编译并不能提供足够的信息来说明可能出现的问题。另外,你的类是如何定义的?
-
当
MoveNext返回false时,你的GetNext应该返回什么? -
异常。请参阅我在所选答案下的最后一条评论。它(尝试)解释用例。
标签: c# extension-methods ienumerable