Bienvenidos sean a este post, hoy veremos un metodo para los objetos List.
Este metodo permite ejecutar una accion por cada elemento de una lista, veamos su sintaxis:
lista.ForEach(funcion);
El metodo se aplica a la lista directamente y la accion que asociaremos a cada elemento sera una funcion externa, vamos a ejecutar un ejemplo para verlo en accion y para ello crearemos un archivo con el nombre de cadauno.cs y le agregaremos el siguiente codigo:
cadauno.cs
using System;
using System.Collections.Generic;
public class Program
{
static int i = 0;
static int Main()
{
List<string> nombres = new List<string>();
nombres.Add("tinchicus");
nombres.Add("enzo");
nombres.Add("ariel");
nombres.Add("javier");
nombres.Add("charly");
nombres.ForEach(cambiar);
return 0;
}
static void cambiar(string dato)
{
i++;
Console.WriteLine("Elem #{0}: {1}", i, dato.ToUpper());
}
}
Antes de hablar del codigo en el Main vamos a hablar primero sobre la funcion que usaremos con el metodo, en esta recibiremos el dato enviado por el metodo pero antes de procesarlo incrementaremos la variable estatica que definiremos antes del Main, lo siguiente sera mostrar el valor de la variable para indicar el elemento y luego al dato recibido le aplicaremos el metodo ToUpper para convertir toda la cadena de texto a mayusculas, y todo eso lo mostraremos en pantalla, ahora pasemos al Main donde nuestro primer paso sera definir una nueva lista a la cual le agregaremos cinco valores por medio de Add, despues de esto aplicaremos el metodo ForEach y usaremos la funcion que hablamos al comienzo, con todo comentado veamos como es su salida:
C:\Users\tinchicus>cadauno.exe
Elem #1: TINCHICUS
Elem #2: ENZO
Elem #3: ARIEL
Elem #4: JAVIER
Elem #5: CHARLY
C:\Users\tinchicus>
Como pueden ver realizo lo solicitado en cada uno de los elementos, pero tenemos otra alternativa para trabajar con este metodo, tomemos el codigo anterior y modifiquemoslo de la siguiente forma:
using System;
using System.Collections.Generic;
public class Program
{
static int i = 0;
static int Main()
{
List<string> nombres = new List<string>();
nombres.Add("tinchicus");
nombres.Add("enzo");
nombres.Add("ariel");
nombres.Add("javier");
nombres.Add("charly");
nombres.ForEach(delegate(string dato)
{
i++;
Console.WriteLine("Elem #{0}: {1}", i, dato.ToUpper());
});
return 0;
}
}
Es un codigo similar pero veamos la primer gran diferencia, en este caso eliminamos la funcion que usabamos para el metodo, la segunda diferencia esta en el metodo donde en lugar de llamar a una funcion usamos a delegate, ese nos permite asociar un dato a una funcion o como en este caso a un bloque para ejecutar una accion, al igual que antes el metodo nos pasara la informacion y este valor lo asignaremos al argumento del delegate que en cada ocasion sera cada uno de los valores de la lista y a esto le aplicaremos el bloque de instrucciones donde haremos lo mismo que haciamos en la funcion del codigo anterior, si lo compilan y vuelven a ejecutar obtendran el mismo resultado que antes, este es simplemente otra alternativa para asociar una accion a los elementos de la lista, para resumirlo trabaja de forma similar a un bucle foreach el cual pasara por todos los elementos de la coleccion y asociara una tarea para cada uno pero al ser usado como metodo podemos aplicarlo en otras circunstancias donde no podriamos usar el bucle foreach.
En resumen, hoy hemos visto a ForEach, que es, para que sirve, como se utiliza, un ejemplo practico para ver como trabajar y despues otra variante para poder trabajar con este metodo, espero les haya sido de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.


Donación
Es para mantenimento del sitio, gracias!
$1.50
