我不太明白 C# Collections 中 IEnumerator 的用途是什么。它的用途是什么,为什么要使用它?
我尝试在线查看http://msdn.microsoft.com/en-us/library/system.collections.ienumerator.aspx 但那篇文章没有多大意义。我问的原因是在 Unity3d 游戏引擎中,它与 yield 函数一起使用。我试图弄清使用 IEnumerator 的原因。
我不太明白 C# Collections 中 IEnumerator 的用途是什么。它的用途是什么,为什么要使用它?
我尝试在线查看http://msdn.microsoft.com/en-us/library/system.collections.ienumerator.aspx 但那篇文章没有多大意义。我问的原因是在 Unity3d 游戏引擎中,它与 yield 函数一起使用。我试图弄清使用 IEnumerator 的原因。
IEnumerator 接口在由类实现时允许使用内置的 foreach 语法对其进行迭代。
在需要为 IEnumerator 接口迭代的类中,为控制对象循环的 GetEnumerator 函数定义了一个方法签名。
public IEnumerator<OrderLine> GetEnumerator()
{
for (int i=0;i<maxItems;i++)
{
yield return item[i];
}
}
正如您在此示例中所看到的,yield语句允许您将控制权返回给调用者,而不会丢失其在枚举中的位置。当调用者点击 foreach 循环的下一个增量时,控制将被传递回 yield 语句之后的行。
您很少显式使用 IEnumerator,但有很多扩展方法可以使用它,以及foreach
. 所有的集合都实现了它,它是迭代器模式的一个例子。
它只是一个允许对象执行操作以轻松迭代集合的接口。您可以使用它来创建对象,这些对象使用 foreach 构造或类似语法迭代自定义集合。