C# 中与 Java 的 Iterator 相当的是什么?

19

我正在手动将Java代码转换为C#,以下是我的代码:

for (Iterator<SGroup> theSGroupIterator = SGroup.getSGroupIterator();
     theSGroupIterator.hasNext();)
{
    SGroup nextSGroup = theSGroupIterator.next();
}

在C#中是否有Iterator<T>的等价物或者是否有更好的C#惯用语?

4个回答

25

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


3

在.NET中,通常会使用接口IEnumerable<T>。这将返回一个IEnumerator<T>,您可以在其上调用MoveNext方法和Current属性以遍历序列。

在C#中,foreach关键字会为您完成所有这些操作。有关如何使用foreach的示例,请参见此处:

http://msdn.microsoft.com/en-us/library/ttw7t8t6(VS.80).aspx


0

0

是的,在C#中,它被称为枚举器


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接