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 While instrukcji , 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 True
wartość , 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 True
występuje , proces jest powtarzany. Jeśli jest False
to , 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 Boolean
wartość .
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 While
While
.
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