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 |
Impossibile specificare se Until viene usato. Ripetere il ciclo fino a quando condition non è False . |
Until |
Impossibile specificare se While viene usato. Ripetere il ciclo fino a quando condition non è True . |
condition |
facoltativo. Espressione Boolean . Se condition è Nothing , Visual Basic lo considera come False . |
statements |
Facoltativa. Una o più istruzioni ripetute durante o fino a quando condition non è True . |
Continue Do |
Facoltativa. Trasferisce il controllo all'iterazione successiva del Do ciclo. |
Exit Do |
Facoltativa. Trasferisce il controllo fuori dal Do ciclo. |
Loop |
Obbligatorio. Termina la definizione del Do ciclo. |
Commenti
Usare una Do...Loop
struttura quando si vuole ripetere un set di istruzioni un numero illimitato di volte, fino a quando non viene soddisfatta una condizione. Per 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. Se non si assegna alcun elemento, il ciclo continua fino a quando non viene eseguito un Exit
controllo di trasferimento fuori dal ciclo.
È 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 in genere risulta da un confronto di due valori, ma può essere qualsiasi espressione che restituisce un valore tipo di dati booleano (True
o False
). Include valori di altri tipi di dati, ad esempio 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 offre maggiore flessibilità rispetto a While... Istruzione End While perché consente di decidere se terminare il ciclo quando condition
si arresta True
o quando diventa True
prima . Consente inoltre di testare condition
all'inizio o alla fine del ciclo.
Esci da Fare
L'istruzione Exit Do può fornire un modo alternativo per uscire da un Do…Loop
oggetto . Exit Do
trasferisce immediatamente il controllo all'istruzione che segue l'istruzione Loop
.
Exit Do
viene spesso usato dopo la valutazione di alcune condizioni, ad esempio in una If...Then...Else
struttura. È possibile uscire da un ciclo se si rileva una condizione che rende non necessaria 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 infinito di volte. È possibile usare Exit Do
per eseguire l'escape del ciclo.
È possibile includere qualsiasi numero di Exit Do
istruzioni ovunque in un Do…Loop
oggetto .
Quando viene 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 finché la index
variabile non è maggiore di 10. La Until
clausola è 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 usata una clausola anziché una While
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 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
L'esempio seguente legge tutte le righe in un file di testo. Il OpenText metodo apre il file e restituisce un StreamReader oggetto che legge i caratteri. Nella condizione il Peek metodo dell'oggetto Do...Loop
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
Commenti e suggerimenti
Invia e visualizza il feedback per