关闭。这个问题需要更多 focused 。它目前不接受答案。












想改善这个问题吗?更新问题,使其仅关注 editing this post 的一个问题。

1年前关闭。



Improve this question




任何人都可以向我解释 IEnumerableIEnumerator 吗?
例如,什么时候在 foreach 上使用它? IEnumerableIEnumerator 有什么区别?为什么我们需要使用它?

最佳答案



您不使用 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/

10-17 01:48