Do...Loop-Anweisung (Visual Basic)

Wiederholt einen Block von Anweisungen, während eine Boolean Bedingung oder ist True , bis die Bedingung zu wird True.

Syntax

Do [ { While | Until } condition ]
    [ statements ]
    [ Continue Do ]
    [ statements ]
    [ Exit Do ]
    [ statements ]
Loop
' -or-
Do
    [ statements ]
    [ Continue Do ]
    [ statements ]
    [ Exit Do ]
    [ statements ]
Loop [ { While | Until } condition ]

Bestandteile

Begriff Definition
Do Erforderlich. Startet die Definition der Do-Schleife.
While Kann nicht angegeben werden, wenn Until verwendet wird. Wiederholen Sie die Schleife, bis condition sie lautet False.
Until Kann nicht angegeben werden, wenn While verwendet wird. Wiederholen Sie die Schleife, bis condition sie lautet True.
condition Dies ist optional. Boolean-Ausdruck. Wenn condition ist Nothing, behandelt Visual Basic es als False.
statements Optional. Mindestens eine Anweisung, die während oder bis wiederholt wird, condition ist True.
Continue Do Optional. Übergibt die Kontrolle an die nächste Iteration der Do-Schleife.
Exit Do Optional. Überträgt die Steuerung aus dem Do-Schleife.
Loop Erforderlich. Beendet die Definition des Do-Schleife.

Bemerkungen

Verwenden Sie eine Do...Loop-Struktur, wenn Sie einen Satz von Anweisungen unbegrenzt oft wiederholen möchten, solange eine Bedingung erhalten bleibt. Wenn Sie die Anweisungen mehrmals wiederholen möchten, ... Next Statement ist in der Regel eine bessere Wahl.

Sie können entweder While oder Until verwenden, um anzugeben condition, aber nicht beides. Wenn Sie keines geben, wird die Schleife fortgesetzt, bis ein Exit Übertragungssteuerelement aus der Schleife herausgeht.

Sie können nur einmal testen condition, entweder am Anfang oder am Ende der Schleife. Wenn Sie am Anfang der Schleife (in der condition-Anweisung) Do testen, wird die Schleife möglicherweise nicht einmal ausgeführt. Wenn Sie am Ende der Schleife (in der Loop-Anweisung) testen, wird die Schleife immer mindestens einmal ausgeführt.

Die Bedingung ergibt sich in der Regel aus dem Vergleich zweier Werte, kann aber auch ein beliebiger Ausdruck sein, der zu einem booleschen Datentypwert (True oder False) ausgewertet wird. Dies schließt Werte anderer Datentypen ein, z. B. numerische Typen, die in Booleankonvertiert wurden.

Sie können Do-Schleifen schachteln, indem Sie eine Schleife in einer anderen platzieren. Sie können auch verschiedene Arten von Steuerungsstrukturen ineinander schachteln. Weitere Informationen finden Sie unter Geschachtelte Steuerelementstrukturen.

Hinweis

Die Do...Loop-Struktur bietet Ihnen mehr Flexibilität als die ... End While-Anweisung, da Sie entscheiden können, ob die Schleife beendet werden soll, wenn condition sie nicht mehr istTrue, oder wenn sie zum ersten Mal True wird. Außerdem können Sie condition entweder am Anfang oder am Ende der Schleife testen.

Beenden Von „Do“

Die Exit Do-Anweisung kann eine alternative Möglichkeit zum Beenden von bieten Do…Loop. Exit Do überträgt die Steuerung sofort an die Anweisung, die auf die Loop-Anweisung folgt.

Sie verwenden Exit Do in der Regel, nachdem eine Bedingung ausgewertet wurde (z. B. in einer If...Then...Else-Struktur). Sie können eine Schleife beenden, wenn Sie eine Bedingung erkennen, die die Fortsetzung der Iterierung unnötig oder unmöglich macht, z. B. einen fehlerhaften Wert oder eine Beendigungsanforderung. Sie können Exit Do verwenden, wenn Sie auf eine Bedingung testen, die eine Endlosschleife verursachen könnte. Dies ist eine Schleife, die eine extrem große oder sogar unendliche Anzahl von Malen ausführen kann. Sie können Exit Do dann verwenden, um die Schleife zu verlassen.

Sie können eine beliebige Anzahl von Exit Do-Anweisungen an einer beliebigen Stelle in einem Do…Loop einschließen.

Bei Verwendung in geschachtelten Do-Schleifen überträgt Exit Do die Steuerung aus der innersten Schleife in die nächst höhere Ebene der Schachtelung.

Beispiel 1

Im folgenden Beispiel werden die Anweisungen in der Schleife weiter ausgeführt, bis die index-Variable größer als 10 ist. Die Until-Klausel befindet sich am Ende der Schleife.

Dim index As Integer = 0
Do
    Debug.Write(index.ToString & " ")
    index += 1
Loop Until index > 10

Debug.WriteLine("")
' Output: 0 1 2 3 4 5 6 7 8 9 10 

Beispiel 2

Das folgende Beispiel verwendet eine While-Klausel anstelle einer Until-Klausel und condition wird am Anfang der Schleife statt am Ende getestet.

Dim index As Integer = 0
Do While index <= 10
    Debug.Write(index.ToString & " ")
    index += 1
Loop

Debug.WriteLine("")
' Output: 0 1 2 3 4 5 6 7 8 9 10 

Beispiel 3

Im folgenden Beispiel wird die Schleife beendet, condition wenn die index Variable größer als 100 ist. Die If Anweisung in der Schleife bewirkt jedoch, dass die Exit Do Anweisung die Schleife beendet, wenn die Indexvariable größer als 10 ist.

Dim index As Integer = 0
Do While index <= 100
    If index > 10 Then
        Exit Do
    End If

    Debug.Write(index.ToString & " ")
    index += 1
Loop

Debug.WriteLine("")
' Output: 0 1 2 3 4 5 6 7 8 9 10 

Beispiel 4

Im folgenden Beispiel werden alle Zeilen in einer Textdatei gelesen. Die OpenText-Methode öffnet die Datei und gibt eine StreamReader zurück, die die Zeichen liest. In der Do...Loop-Bedingung bestimmt die Peek-Methode von StreamReader, ob es zusätzliche Zeichen gibt.

Private Sub ShowText(ByVal textFilePath As String)
    If System.IO.File.Exists(textFilePath) = False Then
        Debug.WriteLine("File Not Found: " & textFilePath)
    Else
        Dim sr As System.IO.StreamReader = System.IO.File.OpenText(textFilePath)

        Do While sr.Peek() >= 0
            Debug.WriteLine(sr.ReadLine())
        Loop

        sr.Close()
    End If
End Sub

Siehe auch