Sdílet prostřednictvím


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

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

Pojem 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 Nepovinné. Boolean Výraz. Pokud condition je Nothing, Visual Basic ji považuje za False.
statements Nepovinné. Jeden nebo více příkazů, které se opakují, nebo dokud, condition je True.
Continue Do Nepovinné. Přenese řízení do další iterace smyčky Do .
Exit Do Nepovinné. 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 vložení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

Viz také