Göra... Loop-instruktion (Visual Basic)
Upprepar ett block med instruktioner medan ett Boolean
villkor är True
eller tills villkoret blir 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 ]
Delar
Period | Definition |
---|---|
Do |
Obligatoriska. Startar definitionen av loopen Do . |
While |
Det går inte att ange om Until används. Upprepa loopen tills condition den är False . |
Until |
Det går inte att ange om While används. Upprepa loopen tills condition den är True . |
condition |
Valfritt. Boolean Uttryck. Om condition är Nothing behandlar Visual Basic det som False . |
statements |
Valfritt. En eller flera -instruktioner som upprepas medan, eller tills, condition är True . |
Continue Do |
Valfritt. Överför kontrollen till nästa iteration av loopen Do . |
Exit Do |
Valfritt. Överför kontrollen utanför loopen Do . |
Loop |
Obligatoriska. Avslutar definitionen av loopen Do . |
Kommentarer
Använd en Do...Loop
struktur när du vill upprepa en uppsättning instruktioner på obestämd tid tills ett villkor är uppfyllt. Om du vill upprepa uttrycken ett angivet antal gånger, för ... Nästa instruktion är vanligtvis ett bättre val.
Du kan använda antingen While
eller Until
för att ange condition
, men inte båda. Om du inte ger något av detta fortsätter loopen tills en Exit
överföringskontroll är utanför loopen.
Du kan bara testa condition
en gång, antingen i början eller i slutet av loopen. Om du testar condition
i början av loopen (i -instruktionen Do
) kanske loopen inte körs ens en gång. Om du testar i slutet av loopen (i -instruktionen Loop
) körs loopen alltid minst en gång.
Villkoret är vanligtvis resultatet av en jämförelse av två värden, men det kan vara valfritt uttryck som utvärderas till ett booleskt datatypvärde (True
eller False
). Detta inkluderar värden för andra datatyper, till exempel numeriska typer, som har konverterats till Boolean
.
Du kan kapsla Do
loopar genom att placera en loop i en annan. Du kan också kapsla olika typer av kontrollstrukturer inom varandra. Mer information finns i Kapslade kontrollstrukturer.
Kommentar
Strukturen Do...Loop
ger dig mer flexibilitet än ... End While-instruktion eftersom det gör att du kan bestämma om du vill avsluta loopen när condition
den slutar vara True
eller när den först blir True
. Du kan också testa condition
i början eller slutet av loopen.
Avsluta do
Exit Do-instruktionen kan vara ett alternativt sätt att avsluta en Do…Loop
. Exit Do
överför kontrollen omedelbart till instruktionen som följer instruktionen Loop
.
Exit Do
används ofta när vissa villkor har utvärderats, till exempel i en If...Then...Else
struktur. Du kanske vill avsluta en loop om du identifierar ett villkor som gör det onödigt eller omöjligt att fortsätta iterera, till exempel ett felaktigt värde eller en begäran om avslutning. En användning av Exit Do
är att testa för ett villkor som kan orsaka en oändlig loop, vilket är en loop som kan köra ett stort eller till och med oändligt antal gånger. Du kan använda Exit Do
för att fly från loopen.
Du kan inkludera valfritt antal Exit Do
instruktioner var som helst i en Do…Loop
.
När den används i kapslade Do
loopar Exit Do
överförs kontrollen från den innersta loopen och till nästa högre kapslingsnivå.
Exempel 1
I följande exempel fortsätter -uttrycken i loopen att köras tills variabeln index
är större än 10. - Until
satsen finns i slutet av loopen.
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
Exempel 2
I följande exempel används en While
sats i stället för en Until
sats och condition
testas i början av loopen i stället för i slutet.
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
Exempel 3
I följande exempel condition
stoppar loopen när variabeln index
är större än 100. - If
instruktionen i -loopen gör dock att -instruktionen Exit Do
stoppar loopen när indexvariabeln är större än 10.
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
Exempel 4
I följande exempel läss alla rader i en textfil. Metoden OpenText öppnar filen och returnerar en StreamReader som läser tecknen. I villkoret Do...Loop
Peek avgör metoden för om StreamReader
det finns några ytterligare tecken.
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