2009-06-18 19 views

Antwort

9

Leider müssen Sie das selbst tun. Das For Each Konstrukt verwendet eine Implementierung der IEnumerator Schnittstelle, um eine Sequenz zu iterieren, und die IEnumerator Schnittstelle stellt keine Mitglieder zur Verfügung, um ihre Position oder ihren aktuellen Index innerhalb der Sequenz anzuzeigen.

+0

Weiß jemand, warum das der Fall ist? –

2

Sie müssten es selbst tun. Meistens, wenn Sie For Each (foreach in C#) machen, ist Ihnen die Iteration nicht wichtig.

0

Foreach Schleifen für jedes Element M findet es in einer Sammlung von M Elementen.

Also, nein, es gibt keine explizite Iterationszählung wie in einer FOR-Schleife.

6

Wenn Sie Visual Studio 2009 (oder VB.Net 9.0) verwenden, können Sie eine Auswahl überschreiben verwenden, um eine Zählung mit den Werten zu erhalten.

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

Wenn ich eine Iteratorvariable benötigen, verwende ich eine for Schleife statt (jede IEnumerable sollte eine .Count Eigenschaft haben).

Statt

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

Schreib

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

, die das gleiche Ergebnis. Sie haben i als Iterator und element enthält das aktuelle Element.