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.
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.
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
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.
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 control adicionales
Estructuras de control anidadas
Referencia
Instrucción For...Next (Visual Basic)