我不太明白從C#集合中使用IEnumerator是什麼。 它用於什麼以及爲什麼要使用它?IEnumerator目的
我試着在網上找http://msdn.microsoft.com/en-us/library/system.collections.ienumerator.aspx 但這篇文章沒有多大意義。我問的原因是在Unity3d遊戲引擎中,它與yield函數一起使用。我試圖理解使用IEnumerator的原因。
我不太明白從C#集合中使用IEnumerator是什麼。 它用於什麼以及爲什麼要使用它?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];
}
}
正如你可以看到在這個例子中,產生語句可以控制返回給調用者不枚舉失去了自己的位置。當調用者擊中foreach循環的下一個增量時,控制權將傳回給yield語句後面的行。
你很少明確地使用IEnumerator,但有很多擴展方法與它一起工作,以及foreach
。所有的集合都實現它,它是Iterator模式的一個例子。
這簡直就是一個接口,它允許對象執行操作以便輕鬆地迭代集合。您可以使用它創建對象,使用foreach構造或類似的語法遍歷自定義集合。
通常需要進行嚴格比較:'for(int i = 0; i
Vlad
2010-10-28 19:22:37
Ooops。太急於得到。固定。 – JohnFx 2010-10-28 19:25:55
不是IEnumerator也是Linq中定義的擴展方法所使用的基接口 – David 2014-06-25 13:47:37