Оператор Do...Loop (Visual Basic)Do...Loop Statement (Visual Basic)

Повторяет блок операторов, пока Boolean условие True или пока условие не станет True.Repeats a block of statements while a Boolean condition is True or until the condition becomes True.

СинтаксисSyntax

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  

ЧастиParts

ТерминTerm ОпределениеDefinition
Do Обязательный.Required. Начинается определение Do цикла.Starts the definition of the Do loop.
While Является обязательным, если используется параметр Until.Required unless Until is used. Повторите цикл до condition является False.Repeat the loop until condition is False.
Until Является обязательным, если используется параметр While.Required unless While is used. Повторите цикл до condition является True.Repeat the loop until condition is True.
condition Необязательный параметр.Optional. Boolean выражение.Boolean expression. Если conditionNothing, Visual Basic рассматривает его как False.If condition is Nothing, Visual Basic treats it as False.
statements Необязательный параметр.Optional. Один или несколько операторов, которые повторяются во время или до, condition является True.One or more statements that are repeated while, or until, condition is True.
Continue Do Необязательный параметр.Optional. Передает управление следующей итерации Do цикла.Transfers control to the next iteration of the Do loop.
Exit Do Необязательный параметр.Optional. Передает управление из Do цикла.Transfers control out of the Do loop.
Loop Обязательный.Required. Завершает определение Do цикла.Terminates the definition of the Do loop.

ПримечанияRemarks

Используйте Do...Loop структуры повторения набор инструкций неограниченное число раз, пока условие выполняется.Use a Do...Loop structure when you want to repeat a set of statements an indefinite number of times, until a condition is satisfied. Если вы хотите повторить инструкцию set несколько раз, для... Следующий оператор обычно является лучшим выбором.If you want to repeat the statements a set number of times, the For...Next Statement is usually a better choice.

Можно использовать либо While или Until для указания condition, но не оба.You can use either While or Until to specify condition, but not both.

Вы можете протестировать condition только один раз, в начале или конце цикла.You can test condition only one time, at either the start or the end of the loop. Если вы проверяете condition в начале цикла (в Do инструкции), цикл не может запустить еще один раз.If you test condition at the start of the loop (in the Do statement), the loop might not run even one time. Если вы тестируете в конце цикла (в Loop инструкции), цикл всегда выполняется по крайней мере один раз.If you test at the end of the loop (in the Loop statement), the loop always runs at least one time.

Условие обычно является результатом сравнения двух значений, но он может быть любое выражение, результатом которого является логический тип данных значение (True или False).The condition usually results from a comparison of two values, but it can be any expression that evaluates to a Boolean Data Type value (True or False). Сюда входят значения других типов данных, например числовых типов, которые были преобразованы в Boolean.This includes values of other data types, such as numeric types, that have been converted to Boolean.

Можно вложить Do циклы, поместив в одном цикле в другую.You can nest Do loops by putting one loop within another. Можно также вложить разные виды структур управления друг с другом.You can also nest different kinds of control structures within each other. Дополнительные сведения см. в разделе вложенные структуры управления.For more information, see Nested Control Structures.

Примечание

Do...Loop Структура дает большую гибкость, чем хотя... Оператор End While так, как это дает возможность решить, следует ли завершить цикл при condition перестает быть True или когда сначала становится True.The Do...Loop structure gives you more flexibility than the While...End While Statement because it enables you to decide whether to end the loop when condition stops being True or when it first becomes True. Он также позволяет тестировать condition в начале или конце цикла.It also enables you to test condition at either the start or the end of the loop.

ExitExit Do

Выйти из сделать оператор может предоставить альтернативный способ выхода из Do…Loop.The Exit Do statement can provide an alternative way to exit a Do…Loop. Exit Do Управление передается оператору, который расположен Loop инструкции.Exit Do transfers control immediately to the statement that follows the Loop statement.

Exit Do часто используется после вычисления некоторого условия, например в If...Then...Else структуры.Exit Do is often used after some condition is evaluated, for example in an If...Then...Else structure. Может потребоваться выйти из цикла, если определяет условие, которое делает бесполезным или невозможным продолжение итераций, например ошибочное значение или запрос на завершение.You might want to exit a loop if you detect a condition that makes it unnecessary or impossible to continue iterating, such as an erroneous value or a termination request. Один из способов использования Exit Do — проверить условие, которое может привести к бесконечный цикл, который является цикл, который может запустить большое или возможно, бесконечное число раз.One use of Exit Do is to test for a condition that could cause an endless loop, which is a loop that could run a large or even infinite number of times. Можно использовать Exit Do для выхода из цикла.You can use Exit Do to escape the loop.

Можно включить любое число Exit Do инструкций в любом месте в Do…Loop.You can include any number of Exit Do statements anywhere in a Do…Loop.

При использовании внутри вложенной Do циклы, Exit Do передает управление из самого внутреннего цикла и поместить в следующий уровень вложенности.When used within nested Do loops, Exit Do transfers control out of the innermost loop and into the next higher level of nesting.

ПримерExample

В следующем примере операторы в цикле продолжать выполняться до index переменной превышает 10.In the following example, the statements in the loop continue to run until the index variable is greater than 10. Until Предложение находится в конце цикла.The Until clause is at the end of the loop.

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 

ПримерExample

В следующем примере используется While предложение вместо Until предложение, и condition тестируется в начале цикла, а не в конце.The following example uses a While clause instead of an Until clause, and condition is tested at the start of the loop instead of at the end.

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 

ПримерExample

В следующем примере condition останавливающее цикл при index переменной превышает 100.In the following example, condition stops the loop when the index variable is greater than 100. If Оператора цикла, однако вызывает Exit Do инструкции для остановки цикла, когда переменная индекса превышает 10.The If statement in the loop, however, causes the Exit Do statement to stop the loop when the index variable is greater than 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 

ПримерExample

В следующем примере считываются все строки в текстовом файле.The following example reads all lines in a text file. OpenText Метод открывает файл и возвращает StreamReader , считывает символы.The OpenText method opens the file and returns a StreamReader that reads the characters. В Do...Loop условие, Peek метод StreamReader определяет, существуют ли все дополнительные символы.In the Do...Loop condition, the Peek method of the StreamReader determines whether there are any additional characters.

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

См. такжеSee also