Do...Loop — Instrukcja (Visual Basic)

Powtarza blok instrukcji, gdy Boolean warunek jest True lub do momentu, aż warunek stanie się True.

Składnia

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 ]

generatora

Termin Definicja
Do Wymagany. Uruchamia definicję Do pętli.
While Nie można podać, jeśli Until jest używany. Powtarzaj pętlę, dopóki condition nie ma parametru False.
Until Nie można podać, jeśli While jest używany. Powtarzaj pętlę, dopóki condition nie ma parametru True.
condition Opcjonalny. Boolean Wyrażenie. Jeśli condition element to Nothing, Visual Basic traktuje go jako False.
statements Opcjonalny. Co najmniej jedna instrukcja powtarzana w czasie lub do czasu condition to True.
Continue Do Opcjonalny. Przenosi kontrolkę do następnej Do iteracji pętli.
Exit Do Opcjonalny. Przenosi kontrolkę poza pętlę Do .
Loop Wymagany. Przerywa definicję Do pętli.

Uwagi

Do...Loop Użyj struktury, jeśli chcesz powtórzyć zestaw instrukcji w nieskończoność, dopóki warunek nie zostanie spełniony. Jeśli chcesz powtórzyć instrukcje określoną liczbę razy, dla ... Następna instrukcja jest zwykle lepszym wyborem.

Możesz użyć polecenia While lub Until , aby określić conditionparametr , ale nie oba te elementy. Jeśli żadna z nich nie zostanie nadana, pętla będzie kontynuowana, dopóki Exit kontrolka transferu nie zostanie wyjęła z pętli.

Możesz przetestować condition tylko jeden raz na początku lub na końcu pętli. Jeśli testujesz condition na początku pętli (w instrukcji Do ), pętla może nie działać nawet raz. Jeśli testujesz na końcu pętli (w instrukcji Loop ), pętla zawsze jest uruchamiana co najmniej raz.

Warunek zwykle wynika z porównania dwóch wartości, ale może to być dowolne wyrażenie, które daje w wyniku wartość typu danych logicznych (True lub False). Obejmuje to wartości innych typów danych, takich jak typy liczbowe, które zostały przekonwertowane na Boolean.

Pętle można zagnieżdżać Do , umieszczając jedną pętlę w innej. Można również zagnieżdżać różne rodzaje struktur sterujących w sobie. Aby uzyskać więcej informacji, zobacz Zagnieżdżone struktury kontrolek.

Uwaga

Struktura Do...Loop zapewnia większą elastyczność niż while... End While, ponieważ umożliwia podjęcie decyzji, czy zakończyć pętlę po condition zatrzymaniuTrue, czy po raz pierwszy staje się .True Umożliwia również testowanie condition na początku lub na końcu pętli.

Zakończ pracę

Instrukcja Exit Do może zapewnić alternatywny sposób zakończenia działania .Do…Loop Exit Do przenosi kontrolkę natychmiast do instrukcji, która jest zgodna z instrukcją Loop .

Exit Do jest często używany po ocenie pewnego warunku, na przykład w If...Then...Else strukturze. Możesz chcieć zamknąć pętlę, jeśli wykryjesz warunek, który sprawia, że iteracja jest niepotrzebna lub niemożliwa, na przykład błędna wartość lub żądanie zakończenia. Jednym z nich Exit Do jest przetestowanie warunku, który może spowodować nieskończoną pętlę, czyli pętlę, która może uruchamiać dużą lub nawet nieskończoną liczbę razy. Możesz użyć Exit Do polecenia , aby uciec od pętli.

Możesz uwzględnić dowolną liczbę instrukcji Exit Do w dowolnym miejscu w obiekcie Do…Loop.

W przypadku użycia w zagnieżdżonych Do pętlach Exit Do transferuje kontrolę poza pętlę najbardziej wewnętrzną i do następnego wyższego poziomu zagnieżdżania.

Przykład 1

W poniższym przykładzie instrukcje w pętli będą nadal działać, dopóki zmienna index nie będzie większa niż 10. Klauzula Until znajduje się na końcu pętli.

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 

Przykład 2

W poniższym przykładzie użyto While klauzuli zamiast Until klauzuli i condition testowano na początku pętli, a nie na końcu.

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 

Przykład 3

W poniższym przykładzie zatrzymuje pętlę, condition gdy zmienna index jest większa niż 100. Instrukcja If w pętli powoduje Exit Do jednak zatrzymanie pętli przez instrukcję, gdy zmienna indeksu jest większa niż 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 

Przykład 4

Poniższy przykład odczytuje wszystkie wiersze w pliku tekstowym. Metoda OpenText otwiera plik i zwraca element StreamReader , który odczytuje znaki. Do...Loop W warunku metoda StreamReader określa, Peek czy istnieją jakieś dodatkowe znaki.

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

Zobacz też