2009-10-17 45 views
9

我手動轉換的Java與C#和有下面的代碼:什麼是C#相當於迭代器的Java中

for (Iterator<SGroup> theSGroupIterator = SGroup.getSGroupIterator(); 
    theSGroupIterator.hasNext();) 
{ 
    SGroup nextSGroup = theSGroupIterator.next(); 
} 

是否存在的Iterator<T>在C#中的等價物,或是否有更好的C#成語?

回答

16

直接等同於C#是IEnumerator<T>代碼看起來像這樣:

SGroup nextSGroup; 
using(IEnumerator<SGroup> enumerator = SGroup.GetSGroupEnumerator()) 
{ 
    while(enumerator.MoveNext()) 
    { 
     nextSGroup = enumerator.Current; 
    } 
} 

然而,慣用的方法是:

foreach(SGroup group in SGroup.GetSGroupIterator()) 
{ 
    ... 
} 

,並有GetSGroupIterator返回IEnumerable<T>(也可能是其重命名爲GetSGroups()或類似)。

3

在.NET中,一般情況下,您將使用IEnumerable<T>接口。這將返回一個IEnumerator<T>,您可以調用MoveNext方法和Current屬性來遍歷序列。

在C#中,foreach關鍵字爲您完成了所有這些工作。如何使用的foreach的例子可以在這裏找到:

http://msdn.microsoft.com/en-us/library/ttw7t8t6(VS.80).aspx