2009-06-18 12 views

risposta

9

Sfortunatamente devi farlo tu stesso. Il costrutto For Each utilizza un'implementazione nell'interfaccia IEnumerator per iterare una sequenza e l'interfaccia IEnumerator non espone alcun membro per indicare la sua posizione o l'indice corrente all'interno della sequenza.

+0

Qualcuno sa perché questo è il caso? –

2

Dovresti farlo da solo. Principalmente, se stai facendo For Each (foreach in C#), allora non ti interessa il conteggio delle iterazioni.

0

Cicli foreach per ciascun elemento M trova in una raccolta di elementi M.

Quindi, no, non c'è un conteggio iterativo esplicito come ci sarebbe in un ciclo FOR.

6

Se si utilizza Visual Studio 2009 (o VB.Net 9.0), è possibile utilizzare un Ignora selezione per ottenere un conteggio dei valori.

For Each cur in col.Select(Function(x,i) New With { .Index = i, .Value = x }) 
... 
Next 
7

Se ho bisogno di una variabile iteratore, io uso un ciclo for invece (ogni IEnumerable deve avere una proprietà Count).

Invece di

For Each element as MyType in MyList 
    .... 
Next 

scrittura

For i as integer = 0 to MyList.Count - 1 
    element = MyList(i) 
    .... 
Next 

che sarà lo stesso risultato. Hai i come iteratore e element contiene l'elemento corrente.

Problemi correlati