簡體   English   中英

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

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM