小编典典

任何人都可以向我解释 IEnumerable 和 IEnumerator 吗?

all

IEnumerable任何人都可以向我解释IEnumerator吗?

例如,何时在 foreach 上使用它?IEnumerable和有什么区别IEnumerator?为什么我们需要使用它?


阅读 79

收藏
2022-04-14

共1个答案

小编典典

例如,何时在 foreach 上使用它?

你不使用IEnumerable“over” foreach。实施IEnumerable使使用成为foreach 可能

当您编写如下代码时:

foreach (Foo bar in baz)
{
   ...
}

它在功能上等同于编写:

IEnumerator bat = baz.GetEnumerator();
while (bat.MoveNext())
{
   bar = (Foo)bat.Current
   ...
}

通过“功能等效”,我的意思是这实际上就是编译器将代码变成的内容。你不能在这个例子中使用foreachon 除非 implements 。 baz
__baz``IEnumerable

IEnumerable表示baz实现该方法

IEnumerator GetEnumerator()

此方法返回的IEnumerator对象必须实现方法

bool MoveNext()

Object Current()

第一个方法前进到IEnumerable创建枚举器的对象中的下一个对象,false如果完成则返回,第二个方法返回当前对象。

.Net 中可以迭代的任何内容 implements
IEnumerable。如果您正在构建自己的类,并且它还没有从实现的类继承,则可以通过实现(并通过创建其新方法将返回的枚举器类)使您的类在语句中IEnumerable可用。foreach``IEnumerable``GetEnumerator

2022-04-14