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 ]
    [ Exit Do ]
    [ statements ]
Loop
-or-
Do
    [ statements ]
    [ Exit Do ]
    [ statements ]
Loop { While | Until } condition

Bestandteile

Ausdruck

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

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

statements

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

Exit Do

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

Tipp

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

Aufgaben

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

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)

Änderungsprotokoll

Datum

Versionsgeschichte

Grund

Januar 2011

Hinweise neu organisiert und Beispiele hinzugefügt.

Informationsergänzung.