Instrucción While...End While (Visual Basic)While...End While Statement (Visual Basic)

Ejecuta una serie de instrucciones siempre que se Trueuna condición determinada.Runs a series of statements as long as a given condition is True.

SintaxisSyntax

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

ElementosParts

TérminoTerm DefiniciónDefinition
condition Obligatorio.Required. Boolean expresión.Boolean expression. Si condition es Nothing, Visual Basic lo trata como False.If condition is Nothing, Visual Basic treats it as False.
statements Opcional.Optional. Una o más instrucciones que siguen While, que se ejecutan cada vez que se True``condition.One or more statements following While, which run every time condition is True.
Continue While Opcional.Optional. Transfiere el control a la siguiente iteración del bloque While.Transfers control to the next iteration of the While block.
Exit While Opcional.Optional. Transfiere el control fuera del bloque While.Transfers control out of the While block.
End While Obligatorio.Required. Termina la definición del bloque While.Terminates the definition of the While block.

ComentariosRemarks

Use una estructura de While...End While cuando desee repetir un conjunto de instrucciones un número indefinido de veces, siempre que una condición permanezca 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. Si desea más flexibilidad con el punto de prueba de la condición o el resultado para probarlo, puede que prefiera la acción... Instrucción 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. Si desea repetir las instrucciones un número establecido de veces, la instrucción for... La siguiente instrucción suele ser una mejor opción.If you want to repeat the statements a set number of times, the For...Next Statement is usually a better choice.

Nota

La palabra clave While también se usa en la. .. Instrucción Loop, la cláusula SKIP while y la cláusula Take while.The While keyword is also used in the Do...Loop Statement, the Skip While Clause and the Take While Clause.

Si condition se True, todos los statements ejecutan hasta que se encuentre la instrucción End While.If condition is True, all of the statements run until the End While statement is encountered. A continuación, el control vuelve a la instrucción While y se comprueba de nuevo condition.Control then returns to the While statement, and condition is again checked. Si condition todavía está True, se repite el proceso.If condition is still True, the process is repeated. Si es False, el control pasa a la instrucción que sigue a la instrucción End While.If it’s False, control passes to the statement that follows the End While statement.

La instrucción While siempre comprueba la condición antes de iniciar el bucle.The While statement always checks the condition before it starts the loop. El bucle continúa mientras la condición permanece True.Looping continues while the condition remains True. Si condition se False la primera vez que se escribe el bucle, no se ejecuta ni siquiera una vez.If condition is False when you first enter the loop, it doesn’t run even once.

El condition suele ser el resultado de una comparación de dos valores, pero puede ser cualquier expresión que se evalúe como un valor de tipo de datos booleano (True o 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). Esta expresión puede incluir un valor de otro tipo de datos, como un tipo numérico, que se ha convertido en Boolean.This expression can include a value of another data type, such as a numeric type, that has been converted to Boolean.

Puede anidar While bucles colocando un bucle dentro de otro.You can nest While loops by placing one loop within another. También puede anidar distintos tipos de estructuras de control entre sí.You can also nest different kinds of control structures within one another. Para obtener más información, vea estructuras de control anidadas.For more information, see Nested Control Structures.

SalirExit While

La instrucción Exit while puede proporcionar otra manera de salir de un bucle While.The Exit While statement can provide another way to exit a While loop. Exit While transfiere inmediatamente el control a la instrucción que sigue a la instrucción End While.Exit While immediately transfers control to the statement that follows the End While statement.

Normalmente se usa Exit While después de evaluar alguna condición (por ejemplo, en una estructura de If...Then...Else).You typically use Exit While after some condition is evaluated (for example, in an If...Then...Else structure). Es posible que desee salir de un bucle si detecta una condición que hace que sea innecesario o imposible continuar la iteración, como un valor erróneo o una solicitud de finalización.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. Puede utilizar Exit While al probar una condición que podría provocar un bucle sin fin, que es un bucle que podría ejecutar un número muy grande o incluso infinito de veces.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. Después, puede usar Exit While para escapar el bucle.You can then use Exit While to escape the loop.

Puede colocar cualquier número de instrucciones Exit While en cualquier parte del bucle While.You can place any number of Exit While statements anywhere in the While loop.

Cuando se utiliza en bucles While anidados, Exit While transfiere el control fuera del bucle más interno y en el siguiente nivel superior de anidamiento.When used within nested While loops, Exit While transfers control out of the innermost loop and into the next higher level of nesting.

La instrucción Continue While transfiere inmediatamente el control a la siguiente iteración del bucle.The Continue While statement immediately transfers control to the next iteration of the loop. Para obtener más información, vea instrucción continue.For more information, see Continue Statement.

EjemploExample

En el ejemplo siguiente, las instrucciones del bucle continúan ejecutándose hasta que la variable de index sea mayor que 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 

EjemploExample

En el ejemplo siguiente se muestra el uso de las instrucciones Continue While y 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

EjemploExample

En el ejemplo siguiente se leen todas las líneas de un archivo de texto.The following example reads all lines in a text file. El método OpenText abre el archivo y devuelve un StreamReader que lee los caracteres.The OpenText method opens the file and returns a StreamReader that reads the characters. En la condición While, el método Peek de la StreamReader determina si el archivo contiene caracteres adicionales.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

Vea tambiénSee also