Оператор 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)

Оператор Exit (Visual Basic)

Оператор While... End While (Visual Basic)

Основные понятия

Циклические структуры (Visual Basic)

Вложенные структуры управления (Visual Basic)