有人能向我解释一下 IEnumerable 和 IEnumerator 吗? 例如,什么时候应该使用它而不是 foreach?IEnumerable 和 IEnumerator 之间的区别是什么?为什么我们需要使用它?
可能重复: 有人能向我解释一下IEnumerable和IEnumerator吗? IEnumerator和IEnumerable有什么区别?
在C#中,如何从给定的数组获取通用枚举器? 在下面的代码中,MyArray是一个由MyType对象组成的数组。我想以所示的方式获取MyIEnumerator,但似乎我获取到了一个空的枚举器(尽管我已确认MyArray.Length > 0)。MyType[] MyArray = ... ; ...
我有些困难记住在C#中如何(而不是为什么)使用IEnumerator。我习惯于Java,它有很好的文档,对初学者解释得非常清楚。所以,请耐心等待。 我尝试从其他答案中学习,但没有成功。与其问一个已经被问过的通用问题,我有一个具体的例子,可以帮助我澄清问题。 假设我有一个方法,需要传递一个I...
我注意到通用的IEnumerator<T>继承自IDisposable,但非通用接口IEnumerator没有。为什么会这样设计呢? 通常,我们使用foreach语句遍历IEnumerator<T>实例。foreach生成的代码实际上有try-finally块,在fi...
我有一个接口,其中实现了“public IEnumerator GetEnumerator()”方法,以便我可以在foreach语句中使用该接口。 我在几个类中实现了这个接口,并且在其中一个类中,我想返回一个空的IEnumerator。目前我是这样做的:public IEnumerator ...
我们都知道可变结构体通常是有害的。我也很确定因为 IEnumerable<T>.GetEnumerator() 返回类型 IEnumerator<T>,这些结构体会立即装箱成引用类型,导致花费比起一开始就是引用类型更高。 那么为什么在BCL泛型集合中,所有枚举器都是可...
我正在实现自己的ArrayList类,当我意识到...public System.Collections.Generic.IEnumerator<T> GetEnumerator() { return _array.GetEnumerator(); } 为什么在.NET中数...
如何正确调用IEnumerator.Reset方法? 文档中说明: Reset方法是为COM互操作性提供的。它不一定需要被实现; 相反,实现者可以简单地抛出一个NotSupportedException。 好了,那么这是否意味着我不应该调用它? 使用异常来控制流程是如此诱人:u...
yield return是实现IEnumerable和IEnumerator的快捷方式吗?