IEnumerator目的

时间:2010-10-28 19:12:12

标签: c# ienumerator

我不太明白从C#Collections中使用IEnumerator是什么。 它用于什么以及为什么要使用它?

我尝试在http://msdn.microsoft.com/en-us/library/system.collections.ienumerator.aspx在线查看 但那篇文章没有多大意义。我问的原因是在Unity3d游戏引擎中,它与yield函数一起使用。我试图弄清楚使用IEnumerator的原因。

3 个答案:

答案 0 :(得分:10)

IEnumerator接口在由类实现时允许通过使用内置的foreach语法进行迭代。

在需要为IEnumerator接口迭代的类中,定义了控制循环对象的GetEnumerator函数的方法签名。

public IEnumerator<OrderLine> GetEnumerator()
    {
        for (int i=0;i<maxItems;i++) 
        {
            yield return item[i];
        }
    }

正如您在此示例中所看到的, yield 语句允许您将控制权返回给调用者,而不会丢失其在枚举中的位置。当调用者到达foreach循环的下一个增量时,控制将被传递回yield语句之后的行。

答案 1 :(得分:1)

您很少明确使用IEnumerator,但有许多扩展方法可以使用它,以及foreach。所有集合都实现了它,它是Iterator模式的一个例子。

答案 2 :(得分:1)

它只是一个允许对象执行操作以便轻松迭代集合的接口。您可以使用它来创建使用foreach结构或类似语法迭代自定义集合的对象。