【问题标题】:IEnumerator PurposeIEnumerator 用途
【发布时间】:2010-10-28 19:12:12
【问题描述】:

我不太明白 C# 集合中的 IEnumerator 的用途是什么。 它的用途是什么,为什么要使用它?

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

【问题讨论】:

    标签: c# ienumerator


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 通常需要严格比较:for (int i = 0; i &lt; maxItems; ++i)
    • 哎呀。太着急了。固定。
    • 并不是说 IEnumerator 也是 Linq 中定义的扩展方法使用的基本接口
    【解决方案2】:

    您很少显式使用 IEnumerator,但有很多扩展方法可以使用它,还有 foreach。所有的集合都实现了它,它是迭代器模式的一个例子。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2017-11-03
        • 2012-11-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-08
        • 2017-10-15
        • 2012-04-01
        • 1970-01-01
        相关资源
        最近更新 更多