关闭。这个问题需要更多 focused 。它目前不接受答案。
想改善这个问题吗?更新问题,使其仅关注 editing this post 的一个问题。
1年前关闭。
Improve this question
任何人都可以向我解释 IEnumerable
和 IEnumerator
吗?
例如,什么时候在 foreach 上使用它? IEnumerable
和 IEnumerator
有什么区别?为什么我们需要使用它?
最佳答案
您不使用 IEnumerable
“超过” foreach
。实现 IEnumerable
使得使用 foreach
成为可能。
当您编写如下代码时:
foreach (Foo bar in baz)
{
...
}
它在功能上等同于编写:
IEnumerator bat = baz.GetEnumerator();
while (bat.MoveNext())
{
bar = (Foo)bat.Current
...
}
通过“功能等效”,我的意思是这实际上是编译器将代码转换成的内容。在此示例中,您不能在
foreach
上使用 baz
,除非 baz
实现 IEnumerable
。IEnumerable
表示 baz
实现了该方法IEnumerator GetEnumerator()
此方法返回的
IEnumerator
对象必须实现这些方法bool MoveNext()
和
Object Current()
第一个方法前进到创建枚举器的 0x25181231343141 对象中的下一个对象,如果完成则返回
IEnumerable
,第二个方法返回当前对象。.Net 中可以迭代的任何内容都实现了
false
。如果您正在构建自己的类,并且它尚未从实现 IEnumerable
的类继承,您可以通过实现 0x25181231343141 语句使您的类在 IEnumerable
语句中可用(并通过创建它的新方法 will1314122131413141) .关于c# - 任何人都可以向我解释 IEnumerable 和 IEnumerator 吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/558304/