Instrucción Do...Loop (Visual Basic)

Repite un bloque de instrucciones mientras una Boolean condición es o hasta que la condición se convierte en True True .

Sintaxis

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

Partes

Término Definición
Do Obligatorio. Inicia la definición del Do bucle.
While Es necesario a menos que se use Until. Repita el bucle hasta condition que sea False .
Until Es necesario a menos que se use While. Repita el bucle hasta condition que sea True .
condition Opcional. Expresión Boolean. Si condition es , Visual Basic trata como Nothing False .
statements Opcional. Una o varias instrucciones que se repiten mientras, o hasta, condition es True .
Continue Do Opcional. Transfiere el control a la siguiente iteración del Do bucle.
Exit Do Opcional. Transfiere el control fuera del Do bucle.
Loop Necesario. Finaliza la definición del Do bucle.

Comentarios

Use una estructura cuando desee repetir un conjunto de instrucciones un número indefinido de veces, hasta que se Do...Loop cumple una condición. Si desea repetir las instrucciones un número establecido de veces, for... La instrucción siguiente suele ser una mejor opción.

Puede usar o While para especificar , pero no Until condition ambos.

Solo puede probar condition una vez, ya sea al principio o al final del bucle. Si prueba al principio del bucle (en la instrucción ), es posible que el bucle no condition Do se ejecute ni siquiera una vez. Si prueba al final del bucle (en la instrucción ), el Loop bucle siempre se ejecuta al menos una vez.

La condición 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 ). Esto incluye valores de otros tipos de datos, como los tipos numéricos, que se han convertido en Boolean .

Puede Do anidar bucles colocando un bucle dentro de otro. También puede anidar diferentes tipos de estructuras de control entre sí. Para obtener más información, vea Estructuras de control anidadas.

Nota

La Do...Loop estructura le ofrece más flexibilidad que while... End While (Instrucción) porque le permite decidir si desea finalizar el bucle cuando deja de condition ser o cuando se convierte por primera vez en True True . También le permite probar condition al principio o al final del bucle.

Salir de la operación

La instrucción Exit Do puede proporcionar una manera alternativa de salir de Do…Loop . Exit Do transfiere el control inmediatamente a la instrucción que sigue a la Loop instrucción .

Exit Do a menudo se usa después de evaluar alguna condición, por ejemplo, en una If...Then...Else estructura . Es posible que quiera 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. Un uso de es probar una condición que podría provocar un bucle sin fin, que es un bucle que podría ejecutar un número grande o incluso Exit Do infinito de veces. Puede usar para Exit Do escapar el bucle.

Puede incluir cualquier número de Exit Do instrucciones en cualquier lugar de un Do…Loop .

Cuando se usa en bucles anidados, transfiere el control fuera del bucle más interno y Do al siguiente nivel superior de Exit Do anidamiento.

Ejemplo 1

En el ejemplo siguiente, las instrucciones del bucle siguen en ejecución hasta que index la variable es mayor que 10. La Until cláusula está al final del bucle.

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 

Ejemplo 2

En el ejemplo siguiente se usa una cláusula en lugar de una cláusula y se prueba al principio del While bucle en lugar de al Until condition final.

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 

Ejemplo 3

En el ejemplo siguiente, condition detiene el bucle cuando la variable es mayor que index 100. Sin embargo, la instrucción del bucle hace que la instrucción detenga el bucle cuando If la variable de índice sea mayor que Exit Do 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 

Ejemplo 4

En el ejemplo siguiente se leen todas las líneas de un archivo de texto. El OpenText método abre el archivo y devuelve un que lee los StreamReader caracteres. En la Do...Loop condición , el método de determina si hay caracteres Peek StreamReader adicionales.

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

Consulta también