我正在将Java手动转换为C#,并具有以下代码:
for (Iterator<SGroup> theSGroupIterator = SGroup.getSGroupIterator();
theSGroupIterator.hasNext();)
{
SGroup nextSGroup = theSGroupIterator.next();
}
C#中是否有等效的
Iterator<T>
或更好的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()
或类似名称)。