Risposte:
Sfortunatamente, non exit two levels of for
ci sono dichiarazioni, ma ci sono alcune soluzioni alternative per fare quello che vuoi:
Goto . In generale, l'uso goto
è considerato una cattiva pratica (e giustamente), ma l'uso goto
solo per un salto in avanti dalle istruzioni di controllo strutturato è generalmente considerato OK, specialmente se l'alternativa è avere un codice più complicato.
For Each item In itemList
For Each item1 In itemList1
If item1.Text = "bla bla bla" Then
Goto end_of_for
End If
Next
Next
end_of_for:
Blocco esterno fittizio
Do
For Each item In itemList
For Each item1 In itemList1
If item1.Text = "bla bla bla" Then
Exit Do
End If
Next
Next
Loop While False
o
Try
For Each item In itemlist
For Each item1 In itemlist1
If item1 = "bla bla bla" Then
Exit Try
End If
Next
Next
Finally
End Try
Funzione separata : inserire i loop all'interno di una funzione separata, dalla quale è possibile uscire con return
. Ciò potrebbe richiedere il passaggio di molti parametri, tuttavia, a seconda di quante variabili locali si utilizzano all'interno del ciclo. Un'alternativa sarebbe mettere il blocco in un lambda multilinea, poiché questo creerà una chiusura sulle variabili locali.
Variabile booleana : questo potrebbe rendere il tuo codice un po 'meno leggibile, a seconda di quanti livelli di loop nidificati hai:
Dim done = False
For Each item In itemList
For Each item1 In itemList1
If item1.Text = "bla bla bla" Then
done = True
Exit For
End If
Next
If done Then Exit For
Next
goto
dell'altro rispetto alla funzione se effettivamente ha senso.
goto
in un grande progetto solo per ricordare i miei giorni di programmazione in qbasic, ah tempi così innocenti. altrimenti andrei per un manichino.
Try
/ Exit Try
, ma non sono un fan goto
dell'opzione.
Metti i loop in una subroutine e chiama return
goto
soluzione più semplice . Ovviamente, se il codice è riutilizzabile, dovrebbe comunque essere già in una funzione.
Rendi il ciclo esterno un ciclo while e "Exit While" nell'istruzione if.
goto
con più istruzioni, più verbosità e più rientro. Qual e il punto?
Ho provato a digitare "exit for" un paio di volte e ho notato che funzionava e VB non mi ha urlato contro. Immagino sia un'opzione, ma sembrava brutta.
Penso che l'opzione migliore sia simile a quella condivisa da Tobias. Metti il tuo codice in una funzione e fallo tornare quando vuoi uscire dai tuoi loop. Sembra anche più pulito.
For Each item In itemlist
For Each item1 In itemlist1
If item1 = item Then
Return item1
End If
Next
Next
For i As Integer = 0 To 100
bool = False
For j As Integer = 0 To 100
If check condition Then
'if condition match
bool = True
Exit For 'Continue For
End If
Next
If bool = True Then Continue For
Next
Se voglio uscire da un ciclo for-to, imposto l'indice oltre il limite:
For i = 1 To max
some code
if this(i) = 25 Then i = max + 1
some more code...
Next`
Poppa.
Exit For item
variante dell'istruzione, simile aNext item
. Nei "bei vecchi tempi" si poteva esplicitamenteNext
il ciclo esterno. Oggi VB dà un errore. Certo, è invece più "costruttivo"Exit For
.