我正在将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()或类似名称)。

09-11 19:57