Java中迭代器的c#等效物是什么
我正在手动将Java转换为C#,并具有以下代码:
for (Iterator<SGroup> theSGroupIterator = SGroup.getSGroupIterator();
theSGroupIterator.hasNext();)
{
SGroup nextSGroup = theSGroupIterator.next();
}
在 C# 中是否有等效的,或者是否有更好的 C# 习语?Iterator<T>
我正在手动将Java转换为C#,并具有以下代码:
for (Iterator<SGroup> theSGroupIterator = SGroup.getSGroupIterator();
theSGroupIterator.hasNext();)
{
SGroup nextSGroup = theSGroupIterator.next();
}
在 C# 中是否有等效的,或者是否有更好的 C# 习语?Iterator<T>
C# 中的直接等效项是 IEnumerator<T>
代码如下所示:
SGroup nextSGroup;
using(IEnumerator<SGroup> enumerator = SGroup.GetSGroupEnumerator())
{
while(enumerator.MoveNext())
{
nextSGroup = enumerator.Current;
}
}
然而,惯用的方式是:
foreach(SGroup group in SGroup.GetSGroupIterator())
{
...
}
并返回 IEnumerable<T>
(并可能将其重命名为或类似名称)。GetSGroupIterator
GetSGroups()
通常,在 .NET 中,您将使用该接口。这将返回一个,您可以调用 MoveNext 方法和 Current 属性来循环访问序列。IEnumerable<T>
IEnumerator<T>
在 C# 中,foreach 关键字可为您完成所有这些操作。有关如何使用 foreach 的示例,可在此处找到: