While...End While – příkaz (Visual Basic)
Spustí řadu příkazů, pokud je True
daná podmínka .
Syntaxe
While condition
[ statements ]
[ Continue While ]
[ statements ]
[ Exit While ]
[ statements ]
End While
Součástky
Pojem | definice |
---|---|
condition |
Povinný: Boolean Výraz. Pokud condition je Nothing , Visual Basic ji považuje za False . |
statements |
Nepovinné. Jeden nebo více následujících příkazůWhile , které se spouští pokaždé, je True condition . |
Continue While |
Nepovinné. Přenese řízení do další iterace While bloku. |
Exit While |
Nepovinné. Přenese kontrolu mimo While blok. |
End While |
Povinný: Ukončí definici While bloku. |
Poznámky
While...End While
Strukturu použijte, pokud chcete opakovat sadu příkazů neurčitý počet, pokud podmínka zůstane True
. Pokud chcete větší flexibilitu s tím, kde testujete podmínku nebo jaký výsledek ho otestujete, můžete upřednostnit ... Příkaz Loop. Pokud chcete příkazy opakovat nastavený počet opakování, hodnota For... Další příkaz je obvykle lepší volbou.
Poznámka:
Klíčové While
slovo se také používá v nástroji Do... Příkaz Loop, klauzuleSkip While a klauzule Take While.
Pokud condition
je True
, všechny statements
spuštění, dokud End While
se příkaz nespustí. Ovládací prvek se pak vrátí do While
příkazu a condition
je znovu zaškrtnutý. Pokud condition
je stále True
, proces se opakuje. Pokud je False
, ovládací prvek předá příkazu, který následuje za příkazem End While
.
Příkaz While
vždy zkontroluje podmínku před spuštěním smyčky. Smyčka pokračuje, zatímco podmínka zůstává True
. Pokud condition
je False
při prvním zadání smyčky, nespustí se ani jednou.
Obvykle condition
se jedná o porovnání dvou hodnot, ale může se jednat o libovolný výraz, který se vyhodnotí jako logická hodnota datového typu (True
nebo False
). Tento výraz může obsahovat hodnotu jiného datového typu, například číselný typ, který byl převeden na Boolean
.
Smyčky můžete vnořit While
umístěním jedné smyčky do jiné. Můžete také vnořit různé druhy řídicích struktur do sebe. Další informace naleznete v tématu Vnořené řídicí struktury.
Ukončit během
Příkaz Exit While může poskytnout jiný způsob, jak ukončit smyčku While
. Exit While
okamžitě přenese řízení na příkaz, který následuje za příkazem End While
.
Obvykle se používá Exit While
po vyhodnocení určité podmínky (například ve If...Then...Else
struktuře). Smyčku můžete ukončit, pokud zjistíte podmínku, která znemožní nebo znemožní iteraci, jako je chybná hodnota nebo žádost o ukončení. Když Exit While
testujete podmínku, která by mohla způsobit nekonečnou smyčku, což je smyčka, která by mohla spustit extrémně velký nebo dokonce nekonečný počet opakování. Pak můžete použít Exit While
k úniku smyčky.
Libovolný počet Exit While
příkazů můžete umístit kdekoli ve While
smyčce.
Při použití v rámci vnořených While
smyček přenese řízení z vnitřní smyčky Exit While
a do další vyšší úrovně vnoření.
Příkaz Continue While
okamžitě přenese řízení do další iterace smyčky. Další informace naleznete v tématu Continue – příkaz.
Příklad 1
V následujícím příkladu příkazy ve smyčce se budou spouštět, dokud index
proměnná není větší než 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
Příklad 2
Následující příklad znázorňuje použití Continue While
příkazů a Exit While
příkazů.
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
Příklad 3
Následující příklad přečte všechny řádky v textovém souboru. Metoda OpenText otevře soubor a vrátí StreamReader znak, který čte znaky. V podmínce While
metoda StreamReader
určuje, Peek zda soubor obsahuje další znaky.
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