IEnumerable任何人都可以向我解释IEnumerator吗?
IEnumerable
IEnumerator
例如,何时在 foreach 上使用它?IEnumerable和有什么区别IEnumerator?为什么我们需要使用它?
例如,何时在 foreach 上使用它?
你不使用IEnumerable“over” foreach。实施IEnumerable使使用成为foreach 可能 。
foreach
当您编写如下代码时:
foreach (Foo bar in baz) { ... }
它在功能上等同于编写:
IEnumerator bat = baz.GetEnumerator(); while (bat.MoveNext()) { bar = (Foo)bat.Current ... }
通过“功能等效”,我的意思是这实际上就是编译器将代码变成的内容。你不能在这个例子中使用foreachon 除非 implements 。 baz __baz``IEnumerable
baz
baz``IEnumerable
IEnumerable表示baz实现该方法
IEnumerator GetEnumerator()
此方法返回的IEnumerator对象必须实现方法
bool MoveNext()
和
Object Current()
第一个方法前进到IEnumerable创建枚举器的对象中的下一个对象,false如果完成则返回,第二个方法返回当前对象。
false
.Net 中可以迭代的任何内容 implements IEnumerable。如果您正在构建自己的类,并且它还没有从实现的类继承,则可以通过实现(并通过创建其新方法将返回的枚举器类)使您的类在语句中IEnumerable可用。foreach``IEnumerable``GetEnumerator
foreach``IEnumerable``GetEnumerator