2010-10-28 53 views

回答

10

IEnumerator接口由類實現時,可以通過使用內置的foreach語法來迭代它。

在需要爲IEnumerator接口迭代的類中,爲GetEnumerator函數定義了一個方法簽名,該函數控制對象的循環。

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

正如你可以看到在這個例子中,產生語句可以控制返回給調用者不枚舉失去了自己的位置。當調用者擊中foreach循環的下一個增量時,控制權將傳回給yield語句後面的行。

+0

通常需要進行嚴格比較:'for(int i = 0; i Vlad 2010-10-28 19:22:37

+0

Ooops。太急於得到。固定。 – JohnFx 2010-10-28 19:25:55

+0

不是IEnumerator也是Linq中定義的擴展方法所使用的基接口 – David 2014-06-25 13:47:37

1

你很少明確地使用IEnumerator,但有很多擴展方法與它一起工作,以及foreach。所有的集合都實現它,它是Iterator模式的一個例子。

1

這簡直就是一個接口,它允許對象執行操作以便輕鬆地迭代集合。您可以使用它創建對象,使用foreach構造或類似的語法遍歷自定義集合。