Gewusst wie: Ausführen mehrerer Anweisungen für jedes einzelne Element in einer Auflistung oder einem Array
Aktualisiert: November 2007
Die Konstruktion der For Each-Anweisung ist der For...Next-Schleife ähnlich, allerdings wird der Anweisungsblock für jedes Element in einer Auflistung ausgeführt und endet nicht nach einer festgelegten Anzahl von Wiederholungen. In einer For Each...Next-Schleife wird eine Elementvariable verwendet, die bei jeder Wiederholung der Schleife ein anderes Element der Auflistung darstellt.
Wiederholen eines Anweisungsblocks für eine Auflistung
So wiederholen Sie eine Reihe von Anweisungen für jedes Element in einer Auflistung
Bestimmen Sie die Auflistung, für die der Anweisungsblock ausgeführt werden soll, und geben Sie mit der For Each...Next-Anweisung (Visual Basic) sowohl die Elementvariable als auch die Auflistung an.
For Each thisControl As System.Windows.Forms.Control In thisForm.Controls
Wenn die Elementvariable nicht außerhalb der Schleife deklariert wird, können Sie die As-Klausel verwenden, um sie als Teil der For Each-Anweisung zu deklarieren.
Visual Basic verwendet bei jeder Iteration automatisch ein anderes Element der Auflistung.
Vervollständigen Sie die For Each...Next-Konstruktion mit einer Next-Anweisung, die auf die letzte zu wiederholende Anweisung folgt. Sie können die Elementvariable in der Next-Anweisung angeben.
Sub lightBlueBackground(ByVal thisForm As System.Windows.Forms.Form) For Each thisControl As System.Windows.Forms.Control In thisForm.Controls thisControl.BackColor = System.Drawing.Color.LightBlue Next thisControl End Sub
Sie können die Elemente der Auflistung zwar lesen, aber keine Änderungen an der Auflistung selbst vornehmen, etwa durch Hinzufügen, Löschen oder Ersetzen von Elementen. Wenn es sich bei einem Element jedoch um einen Verweistyp handelt, können Sie darauf zugreifen und seine Member festlegen. Da jedes Control-Element ein Verweistyp ist, kann der Code im vorhergehenden Beispiel dessen BackColor-Eigenschaft ändern.
Wiederholen eines Anweisungsblocks für ein Array
Sie können mit einer For Each...Next-Schleife auch ein Array durchlaufen. Allerdings können Sie ebenso wie bei Auflistungen die Arrayelemente nur lesen, nicht ändern.
So führen Sie eine Reihe von Anweisungen für jedes Element eines Arrays aus
Geben Sie mit der For Each-Anweisung sowohl die Elementvariable als auch das Array an. Setzen Sie nach dem Arraynamen keine runden Klammern.
Visual Basic behandelt das Array wie eine Auflistung.
Fügen Sie unmittelbar nach dem Anweisungsblock eine Next-Anweisung ein. Sie können die Elementvariable in der Next-Anweisung angeben.
Mit der folgenden Prozedur wird die Summe aus den Elementen eines Arrays ermittelt und dann jedes Element auf 0 (null) zurückgesetzt.
Function sumAndReset(ByRef numbers() As Integer) As Integer Dim sum As Integer = 0 For Each elt As Integer In numbers sum += elt ' The following statement works only on the local copy ' of the array, not on the original array. elt = 0 Next elt Return sum End Function
Die Summierung funktioniert wie beabsichtigt, da hierfür die Elemente nur gelesen werden müssen. Das Zurücksetzen auf 0 (null) funktioniert dagegen nicht wie erwartet, da nur die lokale Kopie jedes Elements auf Null zurückgesetzt wird, während das ursprüngliche Element im ursprünglichen Array unverändert bleibt.
Siehe auch
Aufgaben
Gewusst wie: Übertragen der Steuerung aus einer Kontrollstruktur
Gewusst wie: Mehrfaches Ausführen von mehreren Anweisungen
Gewusst wie: Verbessern der Leistung einer Schleife
Gewusst wie: Springen zur nächsten Iteration einer Schleife
Konzepte
Geschachtelte Steuerungsstrukturen
Referenz
For...Next-Anweisung (Visual Basic)