Do...Loop-Anweisung (Visual Basic)
Wiederholt einen Block von Anweisungen, während eine Boolean
Bedingung oder ist True
, bis die Bedingung zu 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 verwendet wird. Wiederholen Sie die Schleife, bis condition sie lautet False . |
Until |
Kann nicht angegeben werden, wenn While verwendet wird. Wiederholen Sie die Schleife, bis condition sie lautet True . |
condition |
Dies ist optional. Boolean -Ausdruck. Wenn condition ist Nothing , behandelt Visual Basic es als False . |
statements |
Optional. Mindestens eine Anweisung, die während oder bis wiederholt wird, condition ist True . |
Continue Do |
Optional. Übergibt die Kontrolle an die nächste Iteration der Do -Schleife. |
Exit Do |
Optional. Überträgt die Steuerung aus dem Do -Schleife. |
Loop |
Erforderlich. Beendet die Definition des Do -Schleife. |
Bemerkungen
Verwenden Sie eine Do...Loop
-Struktur, wenn Sie einen Satz von Anweisungen unbegrenzt oft wiederholen möchten, solange eine Bedingung erhalten bleibt. Wenn Sie die Anweisungen mehrmals wiederholen möchten, ... Next Statement ist in der Regel eine bessere Wahl.
Sie können entweder While
oder Until
verwenden, um anzugeben condition
, aber nicht beides. Wenn Sie keines geben, wird die Schleife fortgesetzt, bis ein Exit
Übertragungssteuerelement aus der Schleife herausgeht.
Sie können nur einmal testen condition
, entweder am Anfang oder am Ende der Schleife. Wenn Sie am Anfang der Schleife (in der condition
-Anweisung) Do
testen, 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 dem Vergleich zweier Werte, kann aber auch 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 Boolean
konvertiert wurden.
Sie können Do
-Schleifen schachteln, indem Sie eine Schleife in einer anderen platzieren. Sie können auch verschiedene Arten von Steuerungsstrukturen ineinander schachteln. Weitere Informationen finden Sie unter Geschachtelte Steuerelementstrukturen.
Hinweis
Die Do...Loop
-Struktur bietet Ihnen mehr Flexibilität als die ... End While-Anweisung, da Sie entscheiden können, ob die Schleife beendet werden soll, wenn condition
sie nicht mehr istTrue
, oder wenn sie zum ersten Mal True
wird. Außerdem können Sie condition
entweder am Anfang oder am Ende der Schleife testen.
Beenden Von „Do“
Die Exit Do-Anweisung kann eine alternative Möglichkeit zum Beenden von bieten Do…Loop
. Exit Do
überträgt die Steuerung sofort an die Anweisung, die auf die Loop
-Anweisung folgt.
Sie verwenden Exit Do
in der Regel, nachdem eine Bedingung ausgewertet wurde (z. B. in einer If...Then...Else
-Struktur). Sie können eine Schleife beenden, wenn Sie eine Bedingung erkennen, die die Fortsetzung der Iterierung unnötig oder unmöglich macht, z. B. einen fehlerhaften Wert oder eine Beendigungsanforderung. Sie können Exit Do
verwenden, wenn Sie auf eine Bedingung testen, die eine Endlosschleife verursachen könnte. Dies ist eine Schleife, die eine extrem große oder sogar unendliche Anzahl von Malen ausführen kann. Sie können Exit Do
dann verwenden, um die Schleife zu verlassen.
Sie können eine beliebige Anzahl von Exit Do
-Anweisungen an einer beliebigen Stelle in einem Do…Loop
einschließen.
Bei Verwendung in geschachtelten Do
-Schleifen überträgt Exit Do
die Steuerung aus der innersten Schleife in die nächst höhere Ebene der Schachtelung.
Beispiel 1
Im folgenden Beispiel werden die Anweisungen in der Schleife weiter 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
Das folgende Beispiel verwendet eine While
-Klausel anstelle einer Until
-Klausel 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
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 eine StreamReader zurück, die die Zeichen liest. In der Do...Loop
-Bedingung bestimmt die Peek-Methode von StreamReader
, ob es zusätzliche Zeichen gibt.
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