Do...Loop-Anweisung (Visual Basic)

Aktualisiert: November 2007

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

  • While
    Erforderlich, sofern nicht Until verwendet wird. Die Schleife wird wiederholt, bis conditionFalse ist.

  • Until
    Erforderlich, sofern nicht While verwendet wird. Die Schleife wird wiederholt, bis conditionTrue ist.

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

  • statements
    Optional. Eine oder mehrere Anweisungen, die wiederholt werden, solange conditionTrue 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.

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. Sie ermöglicht es Ihnen auch, condition am Anfang oder am Ende der Schleife zu testen.

Regeln

  • Art der Bedingung. Die Bedingung ist normalerweise das Ergebnis des Vergleichs zweier Werte. Es kann sich jedoch um einen beliebigen Ausdruck handeln, der einen Wert mit Boolean-Datentyp (Visual Basic) (True oder False) ergibt. Dazu gehören Werte anderer Datentypen, wie z. B. numerische Typen, die in Boolean umgewandelt wurden.

  • Testen der Bedingung. Sie können condition nur einmal testen, entweder am Anfang oder am Ende der Schleife. Sie können condition entweder mit While oder mit Until angeben, jedoch nicht mit beiden Bedingungen.

  • Anzahl von Iterationen. 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.

  • Schachteln von Schleifen. Sie können Do-Schleifen schachteln, indem Sie eine Schleife in eine andere einfügen. Sie können auch unterschiedliche Arten von Steuerungsstrukturen in anderen Steuerungsstrukturen schachteln. Weitere Informationen finden Sie unter Geschachtelte Steuerungsstrukturen.

  • Übertragen der Steuerung aus der Schleife. Die Exit-Anweisung (Visual Basic) überträgt die Steuerung direkt an die erste Anweisung nach der Loop-Anweisung. 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. Sie können eine beliebige Anzahl von Exit Do-Anweisungen an jeder Stelle der Do-Schleife einfügen. Exit Do wird häufig nach der Überprüfung einer Bedingung verwendet, z. B. in einer If...Then...Else-Struktur.

Endlosschleifen

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 extrem großen oder unendlichen Anzahl von Wiederholungen ausgeführt werden kann. Wenn Sie eine solche Bedingung feststellen, können Sie Exit Do verwenden, um die Schleife zu verlassen. Andernfalls wird die Schleife weiterhin ausgeführt.

Im folgenden Beispiel ist number ein Wert zugeordnet, der veranlassen kann, dass die Schleife mehr als 2 ^ 31-mal ausgeführt wird. Die If-Anweisung überprüft diese Bedingung und beendet sie, falls sie vorhanden ist, um die endlose Ausführung der Schleife zu verhindern.

Sub exitDoExample()
    Dim counter As Integer = 0
    Dim number As Integer = 8
    Do Until number = 10
        If number <= 0 Then Exit Do
        number -= 1
        counter += 1
    Loop
    MsgBox("The loop ran " & counter & " times.")
End Sub
Hinweis:

Drücken Sie ESC oder STRG+UNTBR, um eine Endlosschleife zu beenden.

Beispiel

Im folgenden Beispiel werden geschachtelte Do...Loop-Strukturen, die Verwendung von While und Until sowie das Testen der Bedingung am Anfang (Do-Anweisung) und Ende (Loop-Anweisung) der Schleife veranschaulicht.

Sub DoExample()
    Dim check As Boolean = True
    Dim counter As Integer = 0
    Do
        Do While counter < 20
            counter += 1
            If counter = 10 Then
                check = False
                Exit Do
            End If
        Loop
    Loop Until check = False
End Sub

Im vorherigen Beispiel führt die innere Do...Loop-Struktur 10 Durchläufe durch, der Wert des Flags wird auf False festgelegt, und die Ausführung der Schleife wird mit der Exit Do-Anweisung vorzeitig beendet. Die äußere Schleife wird sofort nach dem Überprüfen des Flags beendet.

Siehe auch

Aufgaben

Gewusst wie: Verbessern der Leistung einer Schleife

Konzepte

Schleifenstruktur

Geschachtelte Steuerungsstrukturen

Referenz

For...Next-Anweisung (Visual Basic)

Boolean-Datentyp (Visual Basic)

Exit-Anweisung (Visual Basic)

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