我手动将
Java转换为C#并具有以下代码:
for (Iterator<SGroup> theSGroupIterator = SGroup.getSGroupIterator(); theSGroupIterator.hasNext();) { SGroup nextSGroup = theSGroupIterator.next(); }
是否有等价的迭代器?在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()或类似的).