Gewusst wie: Ausführen mehrerer Anweisungen für jedes einzelne Element in einer Auflistung oder einem Array (Visual Basic)

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

  1. 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.

  2. 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

  1. 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.

  2. 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 (Visual Basic)

Gewusst wie: Mehrfaches Ausführen von mehreren Anweisungen (Visual Basic)

Gewusst wie: Verbessern der Leistung einer Schleife (Visual Basic)

Gewusst wie: Springen zur nächsten Iteration einer Schleife (Visual Basic)

Referenz

For...Next-Anweisung (Visual Basic)

Konzepte

Entscheidungsstrukturen (Visual Basic)

Schleifenstruktur (Visual Basic)

Weitere Steuerungsstrukturen (Visual Basic)

Geschachtelte Steuerungsstrukturen (Visual Basic)

Weitere Ressourcen

Ablaufsteuerung in Visual Basic