Procedura: eseguire diverse istruzioni per ciascun elemento in un insieme o in una matrice (Visual Basic)
La costruzione dell'istruzione For Each è simile al ciclo For...Next, ma il blocco di istruzioni viene eseguito per ciascun elemento di un insieme, anziché per un numero specifico di volte. Un ciclo For Each...Next utilizza una variabile elemento che rappresenta un elemento differente dell'insieme durante ogni ripetizione del ciclo.
Ripetizione di un blocco di istruzioni per un insieme
Per eseguire un gruppo di istruzioni per ciascun elemento in un insieme
Identificare l'insieme su cui eseguire il blocco di istruzioni e utilizzare l'Istruzione For Each...Next (Visual Basic) per specificare la variabile elemento e l'insieme.
For Each thisControl As System.Windows.Forms.Control In thisForm.Controls
Se la variabile elemento non è dichiarata al di fuori del ciclo, è possibile utilizzare la clausola As per dichiararla come parte dell'istruzione For Each.
In Visual Basic per ogni iterazione viene automaticamente sostituito un elemento differente dell'insieme.
Completare la costruzione For Each...Next con un'istruzione Next dopo l'ultima istruzione da ripetere. La variabile elemento può essere specificata nell'istruzione Next.
Sub lightBlueBackground(ByVal thisForm As System.Windows.Forms.Form) For Each thisControl As System.Windows.Forms.Control In thisForm.Controls thisControl.BackColor = System.Drawing.Color.LightBlue Next thisControl End Sub
È possibile leggere gli elementi dell'insieme, ma non è possibile effettuare operazioni di modifica nell'insieme stesso, quali l'aggiunta, l'eliminazione o la sostituzione di un elemento. Se tuttavia un elemento è un tipo di riferimento, è possibile accedere e impostarne i membri. Dal momento che ogni elemento Control è un tipo di riferimento, il codice dell'esempio precedente può modificarne la proprietà BackColor.
Ripetizione di un blocco di istruzioni per una matrice
È anche possibile scorrere una matrice con un ciclo For Each...Next. Tuttavia, così come accade con gli insiemi, gli elementi di matrice possono essere solo letti, non modificati.
Per eseguire un gruppo di istruzioni per ogni elemento di una matrice
Utilizzare l'istruzione For Each per specificare sia la variabile elemento che la matrice. Non aggiungere parentesi al nome della matrice.
In Visual Basic la matrice viene gestita con le stesse modalità riservate a un insieme.
Aggiungere un'istruzione Next al blocco di istruzioni. La variabile elemento può essere specificata nell'istruzione Next.
La routine riportata di seguito ha lo scopo di trovare la somma degli elementi di una matrice e reimpostare ciascun elemento su zero.
Function sumAndReset(ByRef numbers() As Integer) As Integer Dim sum As Integer = 0 For Each elt As Integer In numbers sum += elt ' The following statement works only on the local copy ' of the array, not on the original array. elt = 0 Next elt Return sum End Function
La somma viene eseguita nel modo previsto in quanto si basa solo sulla lettura degli elementi. Tuttavia la reimpostazione su zero non consente di ottenere i risultati previsti in quanto solo la copia locale di ciascun elemento viene reimpostata su zero, mentre l'elemento originale resta invariato nella matrice originale.
Vedere anche
Attività
Procedura: trasferire un controllo fuori da una struttura di controllo (Visual Basic)
Procedura: eseguire più istruzioni ripetutamente (Visual Basic)
Procedura: migliorare le prestazioni di un ciclo (Visual Basic)
Procedura: passare alla successiva iterazione di un ciclo (Visual Basic)
Riferimenti
Istruzione For...Next (Visual Basic)
Concetti
Strutture decisionali (Visual Basic)
Strutture di ciclo (Visual Basic)
Altre strutture di controllo (Visual Basic)
Strutture di controllo annidate (Visual Basic)