2009-10-17 14 views
9

Io sono la conversione manualmente Java in C# e hanno il seguente codice:qual è il C# equivalente di Iterator in Java

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

Esiste un equivalente di Iterator<T> in C# o c'è una migliore C# linguaggio?

risposta

16

L'equivalente diretta in C# sarebbe IEnumerator<T> e il codice sarebbe simile a questo:

SGroup nextSGroup; 
using(IEnumerator<SGroup> enumerator = SGroup.GetSGroupEnumerator()) 
{ 
    while(enumerator.MoveNext()) 
    { 
     nextSGroup = enumerator.Current; 
    } 
} 

Tuttavia il modo idiomatico sarebbe:

foreach(SGroup group in SGroup.GetSGroupIterator()) 
{ 
    ... 
} 

e hanno GetSGroupIterator ritorno un IEnumerable<T> (e probabilmente rinominarlo in GetSGroups() o simili).

3

In .NET, si utilizzerà l'interfaccia IEnumerable<T>. Ciò restituirà un IEnumerator<T> che è possibile chiamare il metodo MoveNext e la proprietà Current su iterare attraverso la sequenza.

In C#, la parola chiave foreach fa tutto questo per voi. Esempi di come utilizzare foreach possono essere trovate qui:

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