Freigeben über


Tun... Loop-Anweisung (Visual Basic)

Wiederholt einen Block von Anweisungen, während eine Boolean Bedingung ist True oder bis die Bedingung 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 sie verwendet wird. Wiederholen Sie die Schleife, bis condition sie lautet False.
Until Kann nicht angegeben werden, wenn While sie verwendet wird. Wiederholen Sie die Schleife, bis condition sie lautet True.
condition Wahlfrei. Boolean Ausdruck. Wenn condition ja Nothing, behandelt Visual Basic sie als False.
statements Wahlfrei. Mindestens eine Anweisung, die wiederholt wird, während oder bis . conditionTrue
Continue Do Wahlfrei. Überträgt die Steuerung an die nächste Iteration der Do Schleife.
Exit Do Wahlfrei. Überträgt die Steuerung aus dem Do-Schleife.
Loop Erforderlich. Beendet die Definition der Do Schleife.

Bemerkungen

Verwenden Sie eine Do...Loop Struktur, wenn Sie einen Satz von Anweisungen beliebig oft wiederholen möchten, bis eine Bedingung erfüllt ist. Wenn Sie die Anweisungen mehrmals wiederholen möchten, wird die For... Next Statement ist in der Regel eine bessere Wahl.

Sie können entweder While oder Until zum Angeben conditionvon , aber nicht beides verwenden. Wenn Sie keines der Beiden geben, wird die Schleife fortgesetzt, bis ein Exit Übertragungssteuerelement aus der Schleife besteht.

Sie können nur einmal testen condition , entweder am Anfang oder am Ende der Schleife. Wenn Sie am Anfang der Schleife (in der Do Anweisung) testencondition, 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 einem Vergleich von zwei Werten, kann jedoch 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 konvertiert Booleanwurden.

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

Hinweis

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

Exit Do

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

Exit Do wird häufig verwendet, nachdem eine Bedingung ausgewertet wurde, z. B. in einer If...Then...Else Struktur. Möglicherweise möchten Sie eine Schleife beenden, wenn Sie eine Bedingung erkennen, die es unnötig oder unmöglich macht, das Iterieren fortzusetzen, z. B. einen fehlerhaften Wert oder eine Beendigungsanforderung. Eine Verwendung besteht Exit Do darin, eine Bedingung zu testen, die eine Endlosschleife verursachen könnte, bei der es sich um eine Schleife handelt, die eine große oder sogar unendliche Anzahl von Malen ausführen kann. Sie können verwenden Exit Do , um die Schleife zu escapen.

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

Wenn sie in geschachtelten Do Schleifen verwendet wird, Exit Do überträgt die Kontrolle über die innerste Schleife und in die nächste höhere Schachtelungsebene.

Beispiel 1

Im folgenden Beispiel werden die Anweisungen in der Schleife weiterhin 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

Im folgenden Beispiel wird anstelle einer Klausel eine WhileUntil Klausel verwendet und condition 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 einen StreamReader Wert zurück, der die Zeichen liest. In der Do...Loop Bedingung bestimmt die Peek Methode StreamReader , ob zusätzliche 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