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