Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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 ]
Części
| Termin | Definicja |
|---|---|
Do |
To jest wymagane. 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 |
To jest wymagane. 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 Do można zagnieżdżać, wstawiając jedną pętlę w drugą. 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 sterujące.
Uwaga / Notatka
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