Delen via


Doen... Lusinstructie (Visual Basic)

Herhaalt een blok instructies terwijl een Boolean voorwaarde is True of totdat de voorwaarde wordt True.

Syntaxis

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 ]

generator

Term Definitie
Do Vereist. Hiermee start u de definitie van de Do lus.
While Kan niet worden opgegeven als Until wordt gebruikt. Herhaal de lus totdat condition het is False.
Until Kan niet worden opgegeven als While wordt gebruikt. Herhaal de lus totdat condition het is True.
condition Optioneel. Boolean Expressie. Als condition dat het is Nothing, behandelt Visual Basic het als False.
statements Optioneel. Een of meer instructies die worden herhaald terwijl, of tot, condition is True.
Continue Do Optioneel. Hiermee wordt het besturingselement overgedragen naar de volgende iteratie van de Do lus.
Exit Do Optioneel. Hiermee wordt het beheer buiten de lus Do overgedragen.
Loop Vereist. Hiermee wordt de definitie van de Do lus beëindigd.

Opmerkingen

Gebruik een Do...Loop structuur als u een reeks instructies voor onbepaalde tijd wilt herhalen, totdat aan een voorwaarde wordt voldaan. Als u de instructies een bepaald aantal keren wilt herhalen, wordt de For... Next Statement is meestal een betere keuze.

U kunt een van While beide gebruiken of Until opgeven condition, maar niet beide. Als u geen van beide geeft, wordt de lus voortgezet totdat een Exit overdrachtsbeheer buiten de lus is.

U kunt slechts één keer testen condition aan het begin of einde van de lus. Als u test condition aan het begin van de lus (in de Do instructie), wordt de lus mogelijk niet één keer uitgevoerd. Als u aan het einde van de lus (in de Loop instructie) test, wordt de lus altijd ten minste één keer uitgevoerd.

De voorwaarde resulteert meestal in een vergelijking van twee waarden, maar het kan elke expressie zijn die resulteert in een Booleaanse waarde voor het gegevenstype (True of False). Dit omvat waarden van andere gegevenstypen, zoals numerieke typen, die zijn geconverteerd naar Boolean.

U kunt lussen nesten door de ene lus in een andere te plaatsen Do . U kunt ook verschillende soorten controlestructuren binnen elkaar nesten. Zie Geneste besturingsstructuren voor meer informatie.

Notitie

De Do...Loop structuur biedt u meer flexibiliteit dan de While... End While-instructie omdat u hiermee kunt bepalen of u de lus wilt beëindigen wanneer condition deze stopt True of wanneer deze voor het eerst wordt True. Hiermee kunt u ook testen condition aan het begin of einde van de lus.

Do afsluiten

De instructie Do afsluiten kan een alternatieve manier bieden om een Do…Loop. Exit Do de besturing onmiddellijk overdraagt naar de instructie die volgt op de Loop instructie.

Exit Do wordt vaak gebruikt nadat een bepaalde voorwaarde is geëvalueerd, bijvoorbeeld in een If...Then...Else structuur. Mogelijk wilt u een lus afsluiten als u een voorwaarde detecteert die het onnodig of onmogelijk maakt om door te gaan met herhalen, zoals een onjuiste waarde of een beëindigingsaanvraag. Een gebruik van Exit Do is om te testen op een voorwaarde die een eindeloze lus kan veroorzaken. Dit is een lus die een groot of zelfs oneindig aantal keren kan worden uitgevoerd. U kunt deze gebruiken Exit Do om de lus te ontsnappen.

U kunt een willekeurig aantal Exit Do instructies overal in een Do…Loop.

Bij gebruik binnen geneste Do lussen brengt Exit Do u de controle buiten de binnenste lus en in het volgende hogere nestniveau over.

Voorbeeld 1

In het volgende voorbeeld blijven de instructies in de lus worden uitgevoerd totdat de index variabele groter is dan 10. De Until component bevindt zich aan het einde van de lus.

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 

Voorbeeld 2

In het volgende voorbeeld wordt een While component gebruikt in plaats van een Until component en condition wordt getest aan het begin van de lus in plaats van aan het einde.

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 

Voorbeeld 3

In het volgende voorbeeld condition stopt u de lus wanneer de index variabele groter is dan 100. De If instructie in de lus zorgt er echter voor dat de Exit Do instructie de lus stopt wanneer de indexvariabele groter is dan 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 

Voorbeeld 4

In het volgende voorbeeld worden alle regels in een tekstbestand gelezen. De OpenText methode opent het bestand en retourneert een StreamReader bestand dat de tekens leest. In de Do...Loop voorwaarde bepaalt de Peek methode van de StreamReader voorwaarde of er extra tekens zijn.

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

Zie ook