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