什么是Java中Iterator的c#等价物

pet*_*ust 12 c# java iterator

我手动将Java转换为C#并具有以下代码:

for (Iterator<SGroup> theSGroupIterator = SGroup.getSGroupIterator();
     theSGroupIterator.hasNext();)
{
    SGroup nextSGroup = theSGroupIterator.next();
}
Run Code Online (Sandbox Code Playgroud)

是否有相当于Iterator<T>C#或有更好的C#成语?

Lee*_*Lee 21

C#中的直接等价物将是IEnumerator<T>,代码看起来像这样:

SGroup nextSGroup;
using(IEnumerator<SGroup> enumerator = SGroup.GetSGroupEnumerator())
{
    while(enumerator.MoveNext())
    {
        nextSGroup = enumerator.Current;
    }
}
Run Code Online (Sandbox Code Playgroud)

然而,惯用的方式是:

foreach(SGroup group in SGroup.GetSGroupIterator())
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

GetSGroupIterator返回IEnumerable<T>(并可能将其重命名为GetSGroups()或类似).