While...End While — Instrukcja (Visual Basic)

Uruchamia serię instrukcji, o ile dany warunek to True.

Składnia

While condition
    [ statements ]
    [ Continue While ]
    [ statements ]
    [ Exit While ]
    [ statements ]
End While

generatora

Termin Definicja
condition Wymagany. Boolean Wyrażenie. Jeśli condition element to Nothing, Visual Basic traktuje go jako False.
statements Opcjonalny. Co najmniej jedna instrukcja po Whileinstrukcji , która jest uruchamiana za każdym razem condition to True.
Continue While Opcjonalny. Przenosi kontrolkę do następnej While iteracji bloku.
Exit While Opcjonalny. Transferuje kontrolę z While bloku.
End While Wymagany. Kończy definicję While bloku.

Uwagi

While...End While Użyj struktury, jeśli chcesz powtórzyć zestaw instrukcji w nieskończoność, o ile warunek pozostaje True. Jeśli chcesz mieć większą elastyczność dzięki temu, gdzie testujesz warunek lub jaki wynik go przetestujesz, możesz wybrać opcję Wykonaj... Loop, instrukcja. Jeśli chcesz powtórzyć instrukcje określoną liczbę razy, dla ... Następna instrukcja jest zwykle lepszym wyborem.

Uwaga

Słowo While kluczowe jest również używane w do...Instrukcja Loop, klauzulaSkip While i klauzula Take While.

Jeśli condition parametr ma Truewartość , cały statements przebieg do momentu napotkania instrukcji End While . Kontrolka następnie wraca do instrukcji While i condition jest ponownie sprawdzana. Jeśli condition nadal Truewystępuje , proces jest powtarzany. Jeśli jest Falseto , kontrolka przechodzi do instrukcji, która jest zgodna z instrukcją End While .

Instrukcja While zawsze sprawdza warunek przed uruchomieniem pętli. Pętla jest kontynuowana, gdy warunek pozostaje True. Jeśli condition po False raz pierwszy wprowadzisz pętlę, nie zostanie ona uruchomiona nawet raz.

Zwykle condition wyniki są wynikiem 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). To wyrażenie może zawierać wartość innego typu danych, na przykład typ liczbowy, który został przekonwertowany na Booleanwartość .

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

Zakończ, podczas gdy

Instrukcja Exit While może zapewnić inny sposób zakończenia While pętli. Exit While natychmiast przesyła kontrolkę do instrukcji, która jest zgodna z instrukcją End While .

Zwykle używasz Exit While wartości po obliczeniu 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. Można użyć Exit While podczas testowania warunku, który może spowodować nieskończoną pętlę, która jest pętlą, która może uruchamiać bardzo dużą lub nawet nieskończoną liczbę razy. Następnie możesz użyć polecenia Exit While , aby uciec od pętli.

W pętli można umieścić dowolną liczbę instrukcji Exit WhileWhile .

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

Instrukcja Continue While natychmiast przenosi kontrolkę do następnej iteracji pętli. Aby uzyskać więcej informacji, zobacz Continue, instrukcja.

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.

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 

Przykład 2

Poniższy przykład ilustruje użycie instrukcji Continue While i Exit While .

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

Przykład 3

Poniższy przykład odczytuje wszystkie wiersze w pliku tekstowym. Metoda OpenText otwiera plik i zwraca element StreamReader , który odczytuje znaki. While W warunku metoda StreamReader określa, Peek czy plik zawiera 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)

        While sr.Peek() >= 0
            Debug.WriteLine(sr.ReadLine())
        End While

        sr.Close()
    End If
End Sub

Zobacz też