Compartir a través de


Cómo: Ejecutar varias instrucciones para todos los elementos de una colección o matriz

Actualización: noviembre 2007

La construcción de la instrucción For Each es parecida a la del bucle For...Next, pero ejecuta el bloque de instrucciones una vez por cada elemento de una colección, en vez de un número de veces especificado. Un bucle For Each...Next utiliza una variable de elemento que representa un elemento diferente de la colección durante cada repetición del bucle.

Repetir un bloque de instrucciones para una colección

Para repetir un grupo de instrucciones para cada elemento de una colección.

  1. Identifique la colección en la que va a ejecutar el bloque de instrucciones y utilice Instrucción For Each...Next (Visual Basic) para especificar la variable de elemento y la colección.

    For Each thisControl As System.Windows.Forms.Control In thisForm.Controls
    

    Si la variable de elemento no está declarada fuera del bucle, puede utilizar la cláusula As para declararla como parte de la instrucción For Each.

    Visual Basic sustituye automáticamente un elemento diferente de la colección para cada iteración.

  2. Finalice la construcción For Each...Next con una instrucción Next que sigue a la última instrucción que se va a repetir. Puede especificar la variable de elemento en la instrucción 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
    

    Puede leer los elementos de la colección, pero no puede realizar ningún cambio en la propia colección, como agregar, eliminando o reemplazar cualquier elemento. Sin embargo, si un elemento es un tipo de referencia, puede obtener acceso y establecer sus miembros. Como cada elemento Control es un tipo de referencia, el código del ejemplo anterior puede cambiar su propiedad BackColor.

Repetir un bloque de instrucciones para una matriz

También puede recorrer en iteración una matriz con un bucle For Each...Next. Sin embargo, al igual que con las colecciones, sólo podrá leer los elementos de la matriz pero no modificarlos.

Para repetir un grupo de instrucciones para cada elemento de una matriz

  1. Utilice la instrucción For Each para especificar la variable de elemento y la matriz. No agregue paréntesis detrás del nombre de la matriz.

    Visual Basic trata la matriz de la misma manera que trata una colección.

  2. Agregue al bloque de instrucciones una instrucción Next. Puede especificar la variable de elemento en la instrucción Next.

    El propósito del siguiente procedimiento es calcular la suma de los elementos de una matriz y reiniciar cada elemento a cero.

    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 suma funciona según los esperado, porque se basa sólo en leer los elementos. Sin embargo, la reinicialización a cero no funciona según lo esperado porque sólo se reinicia a cero la copia local de cada elemento mientras que los elementos originales permanecen sin modificar en la matriz original.

Vea también

Tareas

Cómo: Transferir el control fuera de una estructura de control

Cómo: Ejecutar varias instrucciones de forma repetida

Cómo: Mejorar el rendimiento de un bucle

Cómo: Pasar a la siguiente iteración de un bucle

Conceptos

Estructuras de decisión

Estructuras de bucles

Estructuras de control adicionales

Estructuras de control anidadas

Referencia

Instrucción For...Next (Visual Basic)

Otros recursos

Flujo de control en Visual Basic