Istruzione Do...Loop (Visual Basic)

Ripete un blocco di istruzioni mentre una Boolean condizione è True o finché la condizione non diventa True.

Sintassi

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

Parti

Termine Definizione
Do Obbligatorio. Avvia la definizione del Do ciclo.
While Obbligatorio a meno che non sia usato Until. Ripetere il ciclo fino a condition quando non è False.
Until Obbligatorio a meno che non sia usato While. Ripetere il ciclo fino a condition quando non è True.
condition facoltativo. Espressione Boolean. Se condition è Nothing, Visual Basic lo considera come False.
statements facoltativo. Una o più istruzioni ripetute mentre, o fino a, condition è True.
Continue Do facoltativo. Trasferisce il controllo all'iterazione successiva del Do ciclo.
Exit Do facoltativo. Trasferisce il controllo fuori dal Do ciclo.
Loop Obbligatorio. Termina la definizione del Do ciclo.

Commenti

Usare una Do...Loop struttura quando si desidera ripetere un set di istruzioni un numero illimitato di volte, fino a quando non viene soddisfatta una condizione. Se si desidera ripetere le istruzioni un numero di volte impostato, for ... L'istruzione successiva è in genere una scelta migliore.

È possibile usare While o Until per specificare condition, ma non entrambi.

È possibile testare condition una sola volta, all'inizio o alla fine del ciclo. Se si esegue il test condition all'inizio del ciclo (nell'istruzione Do ), il ciclo potrebbe non essere eseguito nemmeno una volta. Se si esegue il test alla fine del ciclo (nell'istruzione Loop ), il ciclo viene sempre eseguito almeno una volta.

La condizione restituisce in genere un confronto di due valori, ma può essere qualsiasi espressione che restituisce un valore di tipo di dati booleano (True o False). Sono inclusi i valori di altri tipi di dati, ad esempio i tipi numerici, che sono stati convertiti in Boolean.

È possibile annidare Do i cicli inserendo un ciclo all'interno di un altro. È anche possibile annidare diversi tipi di strutture di controllo tra loro. Per altre informazioni, vedere Strutture di controllo annidate.

Nota

La Do...Loop struttura ti offre maggiore flessibilità rispetto a While... Istruzione End While perché consente di decidere se terminare il ciclo quando condition smette di essere True o quando diventa Trueper la prima volta . Consente inoltre di eseguire il test condition all'inizio o alla fine del ciclo.

Esci da fare

L'istruzione Exit Do può fornire un modo alternativo per uscire da un oggetto Do…Loop. Exit Do trasferisce immediatamente il controllo all'istruzione che segue l'istruzione Loop .

Exit Do viene spesso usato dopo la valutazione di una condizione, ad esempio in una If...Then...Else struttura. È possibile uscire da un ciclo se si rileva una condizione che rende superfluo o impossibile continuare l'iterazione, ad esempio un valore errato o una richiesta di terminazione. Un uso di Exit Do consiste nel testare una condizione che potrebbe causare un ciclo infinito, ovvero un ciclo che potrebbe eseguire un numero elevato o persino infinito di volte. È possibile usare per eseguire Exit Do l'escape del ciclo.

È possibile includere un numero qualsiasi di istruzioni in qualsiasi punto di Exit Do un oggetto Do…Loop.

Se usato all'interno di cicli annidati Do , Exit Do trasferisce il controllo fuori dal ciclo più interno e nel successivo livello superiore di annidamento.

Esempio 1

Nell'esempio seguente le istruzioni nel ciclo continuano a essere eseguite fino a quando la index variabile non è maggiore di 10. La Until clausola si trova alla fine del ciclo.

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 

Esempio 2

Nell'esempio seguente viene utilizzata una While clausola anziché una Until clausola e condition viene testata all'inizio del ciclo anziché alla fine.

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 

Esempio 3

Nell'esempio seguente il condition ciclo viene arrestato quando la index variabile è maggiore di 100. L'istruzione If nel ciclo, tuttavia, causa l'arresto del ciclo da parte dell'istruzione Exit Do quando la variabile di indice è maggiore di 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 

Esempio 4

Nell'esempio seguente vengono lette tutte le righe di un file di testo. Il OpenText metodo apre il file e restituisce un oggetto StreamReader che legge i caratteri. Do...Loop Nella condizione il Peek metodo dell'oggetto StreamReader determina se sono presenti caratteri aggiuntivi.

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

Vedi anche