.net - IEnumerable & IEnumerator

标签 .net interface

任何人都可以向我解释 IEnumerable 和 IEnumerator 之间的区别是什么,
以及如何使用它们?

谢谢!!!

最佳答案

通常,一个 IEnumerable是可以枚举的对象,例如列表或数组。安 IEnumerator是一个存储枚举状态的对象。

它们不是一个相同的原因是您可以同时对同一个对象进行多个枚举 - 即使在单线程应用程序中也是如此。例如,考虑以下代码:

foreach (x in mylist)
{
    foreach (y in mylist)
    {
        if (x.Value == y.Value && x != y)
        {
            // Found a duplicate value
        }
    }
}

如果 mylist,这将正常工作是 IEnumerable 的正确实现, 但如果 mylist 会失败将自身作为枚举器返回。

关于.net - IEnumerable & IEnumerator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2635818/

相关文章:

go - 反射值接口(interface)和指针接收器

Java 类实现接口(interface)错误

c# - 反射大师 : Why aren't my MethodInfo objects equal?

Python - 如何实现与 NumPy 函数兼容的自定义类?

方法参数是接口(interface)的Java反射

c# - 将属性添加到列表?

c# - 为什么要显式接口(interface)实现?

.net - WPF功能区,选择功能区选项卡时更改主要内容

.net - 如何正确使用BeginRead的 'state'参数?

.net - 一个应用程序中有更多 DispatcherTimers