Оператор Do...Loop (Visual Basic)
Повторяет блок инструкций, пока условие Boolean равно True или до тех пор, пока условие станет True.
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
Части
Термин |
Определение |
Do |
Обязательное.Начало определения цикла Do. |
While |
Требуется, если используется Until.Повторяет цикл до тех пор, пока condition равно False. |
Until |
Требуется, если используется While.Повторяет цикл до тех пор, пока condition равно True. |
condition |
Необязательный параметр.Выражение Boolean.Если condition равно Nothing, Visual Basic обрабатывает его как False. |
statements |
Необязательный параметр.Один или несколько операторов, повторяемых, пока condition равно или пока не станет равно True. |
Continue Do |
Необязательный параметр.Элемент управления перенаправления к следующей итерации цикла Do. |
Exit Do |
Необязательный параметр.Передача управления из цикла Do. |
Loop |
Обязательное.Завершение определения цикла Do. |
Заметки
Используется структура Do...Loop, если требуется повторение набора инструкций неограниченное число раз, пока условие выполняется.Если вы хотите повторить инструкцию определенное количество раз, то For...Next Statement обычно является лучшим выбором.
While или Until можно использовать для указания condition, но не оба одновременно.
Можно проверить condition только один раз — в начале или в конце цикла.Если проверить condition в начале цикла (в инструкции Do), цикл может никогда не выполниться, даже один раз.Если проверить в конце цикла (в инструкции Loop), цикл всегда выполняется по крайней мере один раз.
Условие обычно является результатом сравнения двух значений, но оно может быть любым выражением, значение которого при вычислении имеет тип Тип данных Boolean (Visual Basic) (True или False).Сюда же относятся значения других типов данных, например, числовых типов, преобразованные в тип Boolean.
Циклы Do могут вкладываться друг в друга.Также можно вложить друг в друга различные виды управляющих структур.Дополнительные сведения см. в разделе Вложенные структуры управления (Visual Basic).
Примечание |
---|
Структура Do...Loop имеет большую гибкость, чем Оператор While... End While (Visual Basic), поскольку она позволяет выбрать, следует ли завершать цикл, когда condition перестанет быть равным True, либо в случае, когда станет равно True.Это также позволяет проверить condition в начале либо в конце цикла. |
Exit Do
Оператор Exit Do дает альтернативный способ выхода из Do…Loop.Exit Do немедленно передает управление оператору, следующему за оператором Loop.
Exit Do часто используется после оценки некоторого условия, например в структуре If...Then...Else.Выход из цикла может потребоваться при обнаружении условия, которое делает бесполезным или невозможным продолжение итераций, например ошибочное значение или запрос на завершение.Exit Do, в частности, применяется для тестирования условия, которое может вызвать бесконечный цикл, т. е. цикл, повторяемый много раз или бесконечно.Exit Do можно использовать для выхода из цикла.
Любое число операторов Exit Do можно разместить в любом месте Do…Loop.
При использовании вложенных циклов Do оператор Exit Do передаст управление за пределы самого внутреннего цикла следующему уровню вложения.
Пример
В следующем примере инструкции в цикле выполняются до тех пор, пока значение переменной index остается больше 10.ПредложениеUntil завершает цикл.
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
В следующем примере используется оператор While вместо Until , и condition проверяется в начале цикла, а не в конце.
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
В следующем примере условие condition останавливает цикл, когда переменная index больше 100.Оператор If в цикле, однако, вызывает инструкцию Exit Do , чтобы остановить цикл, когда переменная index больше 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
В следующем примере выполняется чтение всех строк текстового файла.Метод OpenText открывает файл и возвращает StreamReader, который считывает символы.В условии Do...Loop метод PeekStreamReader определяет, есть ли какие-либо дополнительные символы.
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
См. также
Ссылки
Оператор For... Next (Visual Basic)
Тип данных Boolean (Visual Basic)
Оператор While... End While (Visual Basic)