Do...Loop – příkaz (Visual Basic)

Opakuje blok příkazů, dokud Boolean je podmínka True nebo dokud se podmínka nevrátí 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

Součásti

Pojem Definice
Do Povinná hodnota. Spustí definici Do smyčky.
While Povinné Until , pokud se nepoužívá. Opakujte smyčku, dokud condition není False .
Until Povinné While , pokud se nepoužívá. Opakujte smyčku, dokud condition není True .
condition Nepovinný parametr. Boolean vyjádření. pokud condition je Nothing , Visual Basic považuje za False .
statements Nepovinný parametr. Jeden nebo více příkazů, které se opakují během nebo do condition True .
Continue Do Nepovinný parametr. Přenese řízení na další iteraci Do smyčky.
Exit Do Nepovinný parametr. Přenese řízení ze Do smyčky.
Loop Povinná hodnota. Ukončí definici Do smyčky.

Poznámky

Strukturu použijte Do...Loop , pokud chcete opakovat sadu příkazů neurčitým počtem opakování, dokud není splněna podmínka. Pokud chcete příkazy opakovat v nastaveném počtu opakování, pro... Další příkaz je obvykle lepší volbou.

Můžete použít buď While nebo Until k zadání condition , ale ne obojího.

Můžete testovat condition pouze jednou, a to buď na začátku, nebo na konci smyčky. Pokud testujete condition na začátku smyčky (v Do příkazu), smyčka nemusí běžet současně. Pokud testujete na konci smyčky (v Loop příkazu), smyčka vždy proběhne alespoň jednou.

Podmínka obvykle je výsledkem porovnání dvou hodnot, ale může to být libovolný výraz, který je vyhodnocen jako logická hodnota datového typu ( True nebo False ). To zahrnuje hodnoty jiných datových typů, například číselné typy, které byly převedeny na Boolean .

Smyčky můžete vnořovat vložením Do jedné smyčky do jiné. Můžete také vnořit různé druhy řídicích struktur mezi sebou. Další informace najdete v tématu vnořené řídicí struktury.

Poznámka

Do...LoopStruktura poskytuje větší flexibilitu než while... Příkaz End While , protože umožňuje rozhodnout, zda chcete ukončit smyčku při condition zastavení True nebo kdy se bude nacházet poprvé True . Také vám umožňuje testovat buď na condition začátku, nebo na konci smyčky.

Ukončit

Příkaz Exit do může nabídnout alternativní způsob, jak ukončit Do…Loop . Exit Do přenáší řízení okamžitě na příkaz, který následuje po Loop příkazu.

Exit Do se často používá po vyhodnocení některé podmínky, například ve If...Then...Else struktuře. Můžete chtít ukončit smyčku, pokud zjistíte podmínku, která je nepotřebná nebo nemožná, aby pokračovala v iteraci, jako je například chybná hodnota nebo žádost o ukončení. Jedním z nich Exit Do je testování podmínky, která by mohla způsobit nekonečné opakování, což je smyčka, která by mohla vést k velkému nebo dokonce nekonečnému počtu časů. Můžete použít Exit Do k opuštění smyčky.

Můžete zahrnout libovolný počet Exit Do příkazů kdekoli v Do…Loop .

Při použití v rámci vnořených Do smyček Exit Do přenáší řízení z nejvnitřnější smyčky a na další vyšší úroveň vnoření.

Příklad 1

V následujícím příkladu jsou příkazy ve smyčce nadále spuštěny, dokud index je proměnná větší než 10. UntilKlauzule 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 namísto Until klauzule a condition je testován 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 condition zastaví smyčka, pokud index je proměnná větší než 100. IfPříkaz ve smyčce ale způsobí, že Exit Do příkaz zastaví smyčku, když 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. OpenTextMetoda otevře soubor a vrátí hodnotu StreamReader , která přečte znaky. V Do...Loop podmínce Peek Metoda StreamReader Určuje, 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

Viz také