2012-08-06 27 views
5

Normalmente, programma .NET in C#, ma attualmente sto aggiornando un progetto scritto in VB.NET e ho notato una sintassi curiosa usata nei loop For Each.Per ogni x ... Prossimi vs. Per ogni x ... Avanti x

C'è qualche differenza tra

For Each x in collection.Items 
    ... 
Next 

e

For Each x in collection.Items 
    ... 
Next x 

?

Ho visto entrambi nel codice qui ed ero curioso del perché qualcuno avrebbe usato la seconda variante.

+2

AFAIK, è solo per aiutare a mantenere molto grande (nidificato) loop di facile lettura ... – Mr47

+1

non posso trova qualsiasi riferimento ad esso ma penso che in VB6 'Next' fosse più veloce di' Next x' - dubito che sia ancora vero in VB.NET però. –

risposta

5

Questo è specificato in questo modo il riferimento MSDN:

È può facoltativamente specificare l'elemento nell'istruzione Next. Questo migliora la leggibilità del programma, soprattutto se si dispone di nidificato per ciascun ciclo. È necessario specificare la stessa variabile di quella visualizzata nell'istruzione For Each corrispondente.

originale può essere trovato qui - quinto comma ai sensi della sezione Osservazioni:

http://msdn.microsoft.com/en-us/library/5ebk1751.aspx

3

La seconda versione può essere più chiara per il lettore, in particolare dove ci sono molti cicli annidati. Non c'è altra ragione per questo. Vedi MSDN per ulteriori informazioni.

+1

Il tuo link va a questo post lol. Ma grazie. –

+0

Grazie e scuse. Fisso. –

1

Non c'è alcuna differenza nella funzionalità; serve solo ad evitare errori e compatibilità con le versioni precedenti di VB6. Personalmente, non lo uso mai.

0

È lì per annotare quale next appartiene a cui for. Non sono sicuro se i controlli del compilatore per vedere che il for e la partita next, ma in teoria potrebbe fallire se non lo fanno