我不太理解C#集合中的IEnumerator的用法。它是用来做什么的,为什么要用它?
我试着在http://msdn.microsoft.com/en-us/library/system.collections.ienumerator.aspx上在线查看,但那篇文章没有太多意义。我问这个问题的原因是在Unity3d游戏引擎中,它和yield函数一起使用。我正在尝试理解使用IEnumerator的原因。
发布于 2010-10-29 03:13:56
当IEnumerator接口由类实现时,它允许使用内置的foreach语法进行迭代。
在需要为IEnumerator接口迭代的类中,为控制遍历对象的GetEnumerator函数定义一个方法签名。
public IEnumerator<OrderLine> GetEnumerator()
{
for (int i=0;i<maxItems;i++)
{
yield return item[i];
}
}正如您在此示例中所看到的, lets 语句允许您将控制权返回给调用方,而不会丢失其在枚举中的位置。当调用方遇到foreach循环的下一个增量时,控制权将传递回yield语句之后的行。
发布于 2010-10-29 03:16:27
您很少显式地使用IEnumerator,但是有很多扩展方法可以使用它,还有foreach。所有的集合都实现了它,它是迭代器模式的一个例子。
发布于 2010-10-29 03:16:51
它只是一个简单的接口,允许对象执行操作,从而轻松地迭代集合。您可以使用它来创建对象,这些对象使用foreach结构或类似的语法在自定义集合上迭代。
https://stackoverflow.com/questions/4046379
复制相似问题