Do...Loop-Anweisung (Visual Basic)

Wiederholt einen Block mit Anweisungen, solange eine Boolean-Bedingung True ist bzw. bis die Bedingung True wird.

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

Teile

Begriff

Definition

Do

Erforderlich. Leitet die Definition der Do-Schleife ein.

While

Erforderlich, sofern nicht Until verwendet wird. Die Schleife wird wiederholt, bis condition False ist.

Until

Erforderlich, sofern nicht While verwendet wird. Die Schleife wird wiederholt, bis condition True ist.

condition

Dies ist optional. Boolean-Ausdruck. Wenn condition Nothing ist, behandelt Visual Basic den Ausdruck als False.

statements

Dies ist optional. Eine oder mehrere Anweisungen, die wiederholt werden, solange condition True ist bzw. bis die Bedingung True wird.

Continue Do

Dies ist optional. Die Steuerung wird zur nächsten Iteration der Schleife Do.

Exit Do

Dies ist optional. Überträgt die Steuerung aus der Do-Schleife.

Loop

Erforderlich. Beendet die Definition der Do-Schleife.

Hinweise

Verwenden Sie eine Do...Loop-Struktur, wenn eine Gruppe von Anweisungen wiederholt werden soll, bis eine Bedingung zutrifft. Wenn die Anweisungen mit einer festgelegten Anzahl von Wiederholungen ausgeführt werden sollen, ist die For...Next Statement i. d. R. vorzuziehen.

Sie können condition entweder mit While oder mit Until angeben, jedoch nicht mit beiden Bedingungen.

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

Die Bedingung ergibt sich normalerweise durch einen Vergleich zweier Werte. Es kann sich jedoch um einen beliebigen Ausdruck handeln, der zu einem Boolean-Datentyp (Visual Basic)-Wert (True oder False) ausgewertet wird. Dazu gehören Werte anderer Datentypen, wie z. B. numerische Typen, die in Boolean umgewandelt wurden.

Sie können Do-Schleifen schachteln, indem Sie eine Schleife in eine andere einfügen. Sie können auch unterschiedliche Arten von Steuerungsstrukturen ineinander schachteln. Weitere Informationen finden Sie unter Geschachtelte Steuerungsstrukturen (Visual Basic).

Hinweis

Die Do...Loop-Struktur ermöglicht mehr Flexibilität als die While...End While-Anweisung (Visual Basic), weil Sie festlegen können, ob die Schleife beendet werden soll, wenn condition nicht mehr True ist oder wenn die Bedingung das erste Mal True ist.Außerdem können Sie condition am Anfang oder am Ende der Schleife testen.

Exit Do

Die Exit Do-Anweisung ist eine alternative Möglichkeit zum Beenden eines Do…Loop. Exit Do überträgt die Steuerung direkt an die erste Anweisung nach der Loop-Anweisung.

Exit Do wird oft nach der Auswertung einer Bedingung verwendet, z. B. in einer If...Then...Else-Struktur. Möglicherweise möchten Sie eine Schleife beenden, wenn Sie eine Bedingung feststellen, die das Fortsetzen des Durchlaufs unnötig oder unmöglich macht, z. B. ein fehlerhafter Wert oder eine Anforderung zum Beenden. Die Verwendung von Exit Do ist sinnvoll, um eine Bedingung zu testen, die eine Endlosschleife verursachen kann. Hierbei handelt es sich um eine Schleife, die mit einer sehr großen oder unendlichen Anzahl von Wiederholungen ausgeführt werden kann. Sie können die Schleife mit Exit Do verlassen.

Sie können eine beliebige Anzahl von Exit Do-Anweisungen überall in einer Do…Loop einschließen.

Bei Verwendung in geschachtelten Do-Schleifen überträgt Exit Do die Steuerung aus der innersten Schleife auf die nächsthöhere Schachtelungsebene.

Beispiel

Im folgenden Beispiel werden weiterhin die Anweisungen in der Schleife ausgeführt, bis die index-Variable größer als 10 ist. Die Until-Klausel ist 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 

Im folgenden Beispiel wird eine While-Klausel anstelle von einer Until-Klausel verwendet, 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 

Im folgenden Beispiel beendet condition die Schleife, wenn die index-Variable größer als 100 ist. Die If-Anweisung in der Schleife führt jedoch dazu, dass die Exit Do-Anweisung beendet wird, um die Schleife zu stoppen, wenn die Index-Variable 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 

Im folgende Beispiel werden alle Zeilen in einer Textdatei gelesen. Die OpenText-Methode öffnet die Datei und gibt einen StreamReader zurück, der die Zeichen liest. In der Do...Loop-Bedingung bestimmt die Peek-Methode des StreamReader, ob zusätzlichen Zeichen vorhanden sind.

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

Referenz

For...Next-Anweisung (Visual Basic)

Boolean-Datentyp (Visual Basic)

Exit-Anweisung (Visual Basic)

While...End While-Anweisung (Visual Basic)

Konzepte

Schleifenstruktur (Visual Basic)

Geschachtelte Steuerungsstrukturen (Visual Basic)