[英]what is the c# equivalent of Iterator in Java
我手动将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()
或类似)。
在.NET中,您将使用IEnumerable<T>
接口。 这将返回一个IEnumerator<T>
,您可以调用MoveNext方法和Current属性来迭代序列。
在C#中,foreach关键字为您完成所有这些操作。 有关如何使用foreach的示例,请访问:
http://msdn.microsoft.com/en-us/library/ttw7t8t6(VS.80).aspx
是的,在C#中,它被称为枚举器 。
即使C#通过IEnumerator / IEnumerable支持它,也有一个更好的习语:foreach
foreach (SGroup nextSGroup in items)
{
//...
}
有关详细信息,请参阅MSDN: http : //msdn.microsoft.com/en-us/library/aa664754(VS.71).aspx
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.