我手動轉換的Java與C#和有下面的代碼:什麼是C#相當於迭代器的Java中
for (Iterator<SGroup> theSGroupIterator = SGroup.getSGroupIterator();
theSGroupIterator.hasNext();)
{
SGroup nextSGroup = theSGroupIterator.next();
}
是否存在的Iterator<T>
在C#中的等價物,或是否有更好的C#成語?
我手動轉換的Java與C#和有下面的代碼:什麼是C#相當於迭代器的Java中
for (Iterator<SGroup> theSGroupIterator = SGroup.getSGroupIterator();
theSGroupIterator.hasNext();)
{
SGroup nextSGroup = theSGroupIterator.next();
}
是否存在的Iterator<T>
在C#中的等價物,或是否有更好的C#成語?
直接等同於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()
或類似)。
在.NET中,一般情況下,您將使用IEnumerable<T>
接口。這將返回一個IEnumerator<T>
,您可以調用MoveNext方法和Current屬性來遍歷序列。
在C#中,foreach關鍵字爲您完成了所有這些工作。如何使用的foreach的例子可以在這裏找到:
http://msdn.microsoft.com/en-us/library/ttw7t8t6(VS.80).aspx
是,在C#中,它被稱爲Enumerator。
即使這是用C#通過IEnumerator的支持/ IEnumerable的,有一個更好的成語:的foreach
foreach (SGroup nextSGroup in items)
{
//...
}
有關詳細信息,請參閱MSDN: http://msdn.microsoft.com/en-us/library/aa664754(VS.71).aspx