Bienvenidos sean a este post, hoy veremos un metodo para los objetos tipo List.
Este metodo nos permite convertir el contenido de el tipo de dato de un objeto List en otro tipo de dato, veamos su sintaxis:
lista.ConvertAll(conversor);
El metodo se aplica directamente a la lista y lo denominado conversor puede ser una funcion o un operador lambda, las dos sintaxis son distintas pero se encargaran de convertir un valor en otro, suena complicado pero cuando analicemos los ejemplos lo entenderan, para ello vamos a crear un nuevo archivo con el nombre de convierte.cs y le agregaremos el siguiente codigo:
convierte.cs
using System;
using System.Collections.Generic;
public class Program
{
static int Main()
{
List<int> numeros = new List<int>();
numeros.Add(10);
numeros.Add(20);
numeros.Add(30);
numeros.Add(40);
int total = 0;
string cadena = "";
List<string> cnv = numeros.ConvertAll(
new Converter<int, string>(Convertir));
for(int i=0; i < numeros.Count; i++)
{
total += numeros[i];
cadena += cnv[i];
}
Console.WriteLine("Total = {0}", total);
Console.WriteLine("Cadena = {0}", cadena);
return 0;
}
static string Convertir(int numero)
{
return numero.ToString();
}
}
En este primer codigo veremos como trabajar con el conversor basado en la funcion, en el primer bloque definiremos todas nuestros objetos/variables, primero definiremos un objeto de tipo List que almacenara valores de tipo int y le agregaremos cuatro, lo siguiente sera definir dos variables, una de tipo int (total) y otra de tipo string (cadena), por ultimo definimos otro objeto de tipo List pero para string, observen que para este caso usamos el ConvertAll sobre la lista anterior y para poder utilizar la funcion le aplicamos un new Converter, a este le pasamos el tipo que sera de origen y luego a cual debemos convertirlo, por ultimo simplemente pasamos el nombre de la funcion, ahora pasemos a hablar sobre la funcion.
La funcion convertir devolvera un valor de tipo string, observen que este recibe un valor pero nunca se lo pasamos, esto es debido a que el metodo se encarga de enviar los valores por nosotros, en la funcion procederemos a convertir el valor en tipo string y lo devolveremos, con esto podremos convetir cada uno de los elementos en el nuevo tipo, despues tenemos un bucle for donde pasaremos por todos los elementos de cada lista y lo sumaremos en las dos variables que definimos al comienzo, para finalmente mostrar los valores finales de las dos variables, con todo comentado veamos como es su salida:
C:\Users\tinchicus>convierte.exe
Total = 100
Cadena = 10203040
C:\Users\tinchicus>
Como pueden ver en el caso de los tipo int se sumaron todos los valores pero en el caso de string se concatenaron demostrando que se convirtio el tipo de dato en la lista, ahora pasemos a ver como es con el operador lambda, para ello debemos tomar el codigo anterior y reemplazarlo con el siguiente:
using System;
using System.Collections.Generic;
public class Program
{
static int Main()
{
List<int> numeros = new List<int>();
numeros.Add(10);
numeros.Add(20);
numeros.Add(30);
numeros.Add(40);
int total = 0;
string cadena = "";
List<string> cnv = numeros.ConvertAll(c => c.ToString());
for(int i=0; i < numeros.Count; i++)
{
total += numeros[i];
cadena += cnv[i];
}
Console.WriteLine("Total = {0}", total);
Console.WriteLine("Cadena = {0}", cadena);
return 0;
}
}
Es un codigo muy similar pero con dos sutiles diferencias, la primera es la desaparicion de la funcion y la segunda es el reemplazo del new Converter por esta operacion:
c => c.ToString()
En este caso c sera el encargado de recepcionar el valor que le pasemos desde el metodo, el valor desde la lista numeros, y del otro lado tomaremos ese valor y lo convertiremos a string por medio del metodo ToString y asignandolo a la nueva lista, el resto del codigo es exactamente igual si lo compilan y ejecutan deberan obtener el mismo resultado, como pueden ver es una forma mas simple que la anterior pero tambien es mas limitada que la funcion, por eso deberan adecuarlo a la necesidad de su codigo y momento.
En resumen, hoy hemos visto ConvertAll, que es, para que sirve, como se utiliza, un ejemplo practico para ver la conversion en las dos formas posibles como son con una funcion y un operador lambda, 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
