Medan... End While-instruktion (Visual Basic)
Kör en serie instruktioner så länge ett angivet villkor är True
.
Syntax
While condition
[ statements ]
[ Continue While ]
[ statements ]
[ Exit While ]
[ statements ]
End While
Delar
Period | Definition |
---|---|
condition |
Obligatoriska. Boolean Uttryck. Om condition är Nothing behandlar Visual Basic det som False . |
statements |
Valfritt. En eller flera instruktioner efter While , som körs varje gång condition är True . |
Continue While |
Valfritt. Överför kontrollen till nästa iteration av While blocket. |
Exit While |
Valfritt. Överför kontrollen ut ur While blocket. |
End While |
Obligatoriska. Avslutar definitionen av While blocket. |
Kommentarer
Använd en While...End While
struktur när du vill upprepa en uppsättning instruktioner på obestämd tid, så länge ett villkor förblir True
. Om du vill ha mer flexibilitet med var du testar villkoret eller vilket resultat du testar det för, kanske du föredrar Do... Loop-instruktion. Om du vill upprepa uttrycken ett angivet antal gånger, för ... Nästa instruktion är vanligtvis ett bättre val.
Kommentar
Nyckelordet While
används också i Do ... Loop-instruktion, Skip While-satsen och Take While-satsen.
Om condition
är True
, körs alla statements
tills -instruktionen End While
påträffas. Kontrollen återgår sedan till -instruktionen While
och condition
kontrolleras igen. Om condition
är fortfarande True
upprepas processen. Om det är False
skickar kontrollen till -instruktionen som följer -instruktionen End While
.
Instruktionen While
kontrollerar alltid villkoret innan loopen startas. Loopningen fortsätter medan villkoret förblir True
. Om condition
är False
när du först anger loopen körs den inte ens en gång.
Resultatet condition
är vanligtvis 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
). Det här uttrycket kan innehålla ett värde av en annan datatyp, till exempel en numerisk typ, som har konverterats till Boolean
.
Du kan kapsla While
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.
Avsluta medan
Instruktionen Avsluta medan kan vara ett annat sätt att avsluta en While
loop. Exit While
överför omedelbart kontrollen till instruktionen som följer instruktionen End While
.
Du använder Exit While
vanligtvis 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. Du kan använda Exit While
när du testar för ett villkor som kan orsaka en oändlig loop, vilket är en loop som kan köra ett extremt stort eller till och med oändligt antal gånger. Du kan sedan använda Exit While
för att fly från loopen.
Du kan placera valfritt antal Exit While
instruktioner var som helst i loopen While
.
När den används i kapslade While
loopar Exit While
överförs kontrollen från den innersta loopen och till nästa högre kapslingsnivå.
Instruktionen Continue While
överför omedelbart kontrollen till nästa iteration av loopen. Mer information finns i Fortsätt-instruktion.
Exempel 1
I följande exempel fortsätter -uttrycken i loopen att köras tills variabeln index
är större än 10.
Dim index As Integer = 0
While index <= 10
Debug.Write(index.ToString & " ")
index += 1
End While
Debug.WriteLine("")
' Output: 0 1 2 3 4 5 6 7 8 9 10
Exempel 2
Följande exempel illustrerar användningen av - och Exit While
-uttryckenContinue While
.
Dim index As Integer = 0
While index < 100000
index += 1
' If index is between 5 and 7, continue
' with the next iteration.
If index >= 5 And index <= 8 Then
Continue While
End If
' Display the index.
Debug.Write(index.ToString & " ")
' If index is 10, exit the loop.
If index = 10 Then
Exit While
End If
End While
Debug.WriteLine("")
' Output: 1 2 3 4 9 10
Exempel 3
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 While
Peek avgör metoden för StreamReader
filen om filen innehåller 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)
While sr.Peek() >= 0
Debug.WriteLine(sr.ReadLine())
End While
sr.Close()
End If
End Sub