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

Выполняет ряд инструкций, если заданное условие имеет True.Runs a series of statements as long as a given condition is True.

СинтаксисSyntax

While condition  
    [ statements ]  
    [ Continue While ]  
    [ statements ]  
    [ Exit While ]  
    [ statements ]  
End While  

ЧастиParts

ТерминTerm ОпределениеDefinition
condition Обязательный.Required. выражение Boolean.Boolean expression. Если condition Nothing, Visual Basic рассматривает его как False.If condition is Nothing, Visual Basic treats it as False.
statements Необязательный.Optional. Один или несколько инструкций, следующих за While, которые выполняются каждый раз, когда condition True.One or more statements following While, which run every time condition is True.
Continue While Необязательный.Optional. Передает управление следующей итерации блока While.Transfers control to the next iteration of the While block.
Exit While Необязательный.Optional. Передает управление за пределы блока While.Transfers control out of the While block.
End While Обязательный.Required. Завершает определение блока While.Terminates the definition of the While block.

ЗаметкиRemarks

Используйте структуру While...End While, если нужно повторить набор инструкций неопределенное количество раз, пока условие остается True.Use a While...End While structure when you want to repeat a set of statements an indefinite number of times, as long as a condition remains True. Если вы хотите обеспечить большую гибкость при тестировании условия или результата тестирования, вы можете предпочесть оператору Do... Loop, инструкция.If you want more flexibility with where you test the condition or what result you test it for, you might prefer the Do...Loop Statement. Если нужно повторить инструкции заданное число раз, то для... Обычно лучше подходит следующий оператор.If you want to repeat the statements a set number of times, the For...Next Statement is usually a better choice.

Примечание

Ключевое слово While также используется в инструкции Do... Оператор Loop, предложение Skip While и предложение Take While.The While keyword is also used in the Do...Loop Statement, the Skip While Clause and the Take While Clause.

Если condition True, все statements выполняться до тех пор, пока не будет обнаружена инструкция End While.If condition is True, all of the statements run until the End While statement is encountered. Затем управление возвращается к инструкции While, а condition снова проверяется.Control then returns to the While statement, and condition is again checked. Если condition по-прежнему True, процесс повторяется.If condition is still True, the process is repeated. Если это False, управление передается оператору, который следует за инструкцией End While.If it’s False, control passes to the statement that follows the End While statement.

Оператор While всегда проверяет условие перед началом цикла.The While statement always checks the condition before it starts the loop. Цикл продолжается, пока условие остается True.Looping continues while the condition remains True. Если condition False при первом входе в цикл, он не выполняется даже один раз.If condition is False when you first enter the loop, it doesn’t run even once.

@No__t_0 обычно является результатом сравнения двух значений, но может быть любым выражением, результатом вычисления которого является логическое значение типа данных (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 expression can include a value of another data type, such as a numeric type, that has been converted to Boolean.

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

Выйти, покаExit While

Оператор Exit While может предоставить другой способ выхода из цикла While.The Exit While statement can provide another way to exit a While loop. Exit While немедленно передает управление оператору, который следует за инструкцией End While.Exit While immediately transfers control to the statement that follows the End While statement.

Обычно Exit While используется после оценки некоторого условия (например, в структуре If...Then...Else).You typically use Exit While 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. @No__t_0 можно использовать при проверке условия, которое может вызвать бесконечный цикл, то есть цикл, который может выполнять очень большое или даже бесконечное число раз.You can use Exit While when you test for a condition that could cause an endless loop, which is a loop that could run an extremely large or even infinite number of times. Затем можно использовать Exit While для экранирования цикла.You can then use Exit While to escape the loop.

В цикле While можно поместить любое количество Exit While инструкций.You can place any number of Exit While statements anywhere in the While loop.

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

Оператор Continue While немедленно передает управление следующей итерации цикла.The Continue While statement immediately transfers control to the next iteration of the loop. Дополнительные сведения см. в разделе оператор continue.For more information, see Continue Statement.

ПримерExample

В следующем примере операторы в цикле продолжают выполняться до тех пор, пока значение переменной index не превышает 10.In the following example, the statements in the loop continue to run until the index variable is greater than 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 

ПримерExample

В следующем примере показано использование инструкций Continue While и Exit While.The following example illustrates the use of the Continue While and Exit While statements.

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

Пример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. В Whileном условии Peek метод StreamReader определяет, содержит ли файл дополнительные символы.In the While condition, the Peek method of the StreamReader determines whether the file contains 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)

        While sr.Peek() >= 0
            Debug.WriteLine(sr.ReadLine())
        End While

        sr.Close()
    End If
End Sub

См. такжеSee also