Dela via


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 Nothingbehandlar 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...LoopPeek 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

Se även