Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Opakuje blok příkazů, zatímco Boolean podmínka je True nebo dokud se podmínka nestane True.
Syntaxe
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 ]
Součástky
| termín | Definice |
|---|---|
Do |
Povinné. Spustí definici smyčky Do . |
While |
Nelze je-li Until použít. Opakujte smyčku, dokud condition nebude False. |
Until |
Nelze je-li While použít. Opakujte smyčku, dokud condition nebude True. |
condition |
Volitelný.
Boolean výraz. Pokud condition je Nothing, Visual Basic ji považuje za False. |
statements |
Volitelný. Jeden nebo více příkazů, které se opakují, nebo dokud, condition je True. |
Continue Do |
Volitelný. Přenese řízení do další iterace smyčky Do . |
Exit Do |
Volitelný. Přenese kontrolu mimo smyčku Do . |
Loop |
Povinné. Ukončí definici smyčky Do . |
Poznámky
Do...Loop Strukturu použijte, pokud chcete sadu příkazů opakovat neurčitý početkrát, dokud není splněna podmínka. Pokud chcete příkazy opakovat nastavený počet opakování, hodnota For... Další příkaz je obvykle lepší volbou.
Můžete použít buď While nebo Until zadat condition, ale ne obojí. Pokud dáte ani jedno, smyčka pokračuje, dokud Exit se nepřenese řízení mimo smyčku.
Na začátku nebo na konci smyčky můžete testovat condition pouze jednou. Pokud testujete condition na začátku smyčky (v Do příkazu), smyčka se nemusí spustit ani jednou. Pokud testujete na konci smyčky (v Loop příkazu), smyčka se vždy spustí alespoň jednou.
Podmínka obvykle pochází z porovnání dvou hodnot, ale může to být libovolný výraz, který se vyhodnotí jako logická hodnota datového typu (True nebo False). To zahrnuje hodnoty jiných datových typů, jako jsou číselné typy, které byly převedeny na Boolean.
Smyčky můžete vnořit Do umístěním jedné smyčky do jiné. Můžete také vnořit různé druhy řídicích struktur mezi sebou. Další informace naleznete v tématu Vnořené řídicí struktury.
Poznámka:
Struktura Do...Loop poskytuje větší flexibilitu než Zatímco... Ukončit příkaz While , protože umožňuje rozhodnout, zda ukončit smyčku, když condition přestane být True nebo kdy se poprvé stane True. Umožňuje také testovat condition na začátku nebo na konci smyčky.
Ukončit akci
Příkaz Exit Do může poskytnout alternativní způsob, jak ukončit Do…Looppříkaz .
Exit Do okamžitě přenese řízení na příkaz, který následuje za příkazem Loop .
Exit Do se často používá 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í. Jedním z použití Exit Do je otestovat podmínku, která by mohla způsobit nekonečné smyčky, což je smyčka, která by mohla spustit velký nebo dokonce nekonečný početkrát. Pomocí této Exit Do smyčky můžete utéct.
Můžete zahrnout libovolný počet Exit Do příkazů kdekoli v sadě Do…Loop.
Při použití v rámci vnořených Do smyček přenese řízení z vnitřní smyčky Exit Do a do další vyšší úrovně vnoření.
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. Klauzule Until je na konci smyčky.
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
Příklad 2
Následující příklad používá While klauzuli místo Until klauzule a condition testuje se na začátku smyčky místo na konci.
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
Příklad 3
V následujícím příkladu zastaví smyčku, condition pokud index je proměnná větší než 100. Příkaz If ve smyčce však způsobí Exit Do zastavení smyčky, pokud je proměnná indexu větší než 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
Příklad 4
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 Do...Loop metoda StreamReader určuje, Peek zda existují nějaké 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)
Do While sr.Peek() >= 0
Debug.WriteLine(sr.ReadLine())
Loop
sr.Close()
End If
End Sub