Condividi tramite


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

  1. 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.

  2. 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

  1. 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.

  2. 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)

Altre risorse

Flusso di controllo in Visual Basic