我不太明白从C#Collections中使用IEnumerator是什么。 它用于什么以及为什么要使用它?
我尝试在http://msdn.microsoft.com/en-us/library/system.collections.ienumerator.aspx在线查看 但那篇文章没有多大意义。我问的原因是在Unity3d游戏引擎中,它与yield函数一起使用。我试图弄清楚使用IEnumerator的原因。
答案 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结构或类似语法迭代自定义集合的对象。