Geschachtelte Steuerungsstrukturen
Aktualisiert: November 2007
Sie können Steuerungsanweisungen in andere Steuerungsanweisungen einfügen, wie z. B. einen If...Then...Else-Block in eine For...Next-Schleife. Eine Steuerungsanweisung, die in eine andere Steuerungsanweisung eingefügt wurde, ist geschachtelt.
Schachtelungsebenen
Steuerungsstrukturen in Visual Basic können auf beliebig vielen Ebenen geschachtelt werden. Es ist üblich, geschachtelte Strukturen lesbarer zu machen, indem der Text jeder Struktur eingerückt wird. Dies wird automatisch vom Editor der integrierten Entwicklungsumgebung (IDE) erledigt.
Im folgenden Beispiel addiert die sumRows-Prozedur die positiven Elemente jeder Zeile der Matrix.
Public Sub sumRows(ByVal a(,) As Double, ByRef r() As Double)
Dim i, j As Integer
For i = 0 To UBound(a, 1)
r(i) = 0
For j = 0 To UBound(a, 2)
If a(i, j) > 0 Then
r(i) = r(i) + a(i, j)
End If
Next j
Next i
End Sub
Im vorhergehenden Beispiel schließt die erste Next-Anweisung die innere For-Schleife und die letzte Next-Anweisung die äußere For-Schleife.
Gleichermaßen gelten in geschachtelten If-Anweisungen die End If-Anweisungen automatisch für die nächste vorangegangene If-Anweisung. Geschachtelte Do-Schleifen funktionieren ähnlich, wobei die innerste Loop-Anweisung mit der innersten Do-Anweisung übereinstimmt.
Schachteln von verschiedenen Arten von Steuerungsstrukturen
Sie können eine Art von Steuerungsstruktur innerhalb einer anderen Art schachteln. Im folgenden Beispiel werden ein With-Block in einer For Each-Schleife und geschachtelte If-Blöcke im With-Block verwendet.
For Each ctl As System.Windows.Forms.Control In Me.Controls
With ctl
.BackColor = System.Drawing.Color.Yellow
.ForeColor = System.Drawing.Color.Black
If .CanFocus Then
.Text = "Colors changed"
If Not .Focus() Then
' Insert code to process failed focus.
End If
End If
End With
Next ctl
Überlappende Steuerungsstrukturen
Steuerungsstrukturen können nicht überlappen. Das bedeutet, dass alle geschachtelten Strukturen vollständig in der nächsten inneren Struktur enthalten sein müssen. Die folgende Anordnung ist beispielsweise ungültig, weil die For-Schleife vor dem inneren With-Block abgeschlossen wird.
Ungültige Schachtelung von For- und With-Strukturen
Der Visual Basic-Compiler erkennt diese überlappenden Steuerungsstrukturen und signalisiert beim Kompilieren einen Fehler.
Siehe auch
Aufgaben
Gewusst wie: Übertragen der Steuerung aus einer Kontrollstruktur