Acerca de:

Este blog contiene los códigos, ejemplos y bases de datos que he usado cuando aprendía acerca de algún tema específico. En lugar de borrarlos (una vez dominado ya el tema), he decidido publicarlos :)

sábado, 19 de mayo de 2012

Arrays en C#

Encontré este tutorial sobre arrays en C#. Noté que le faltó mencionar un detalle: Según la documentación de msdn, un array no son sólo posiciones en memoria, son objetos que heredan de System.Array.
Primeo miramos la declaración de la clase Array:



La clase Array hereda los métodos de muchas otras clases, entre ellas IEnumerable. Es decir: todos los métodos que se pueden usar en IEnumerable, se pueden usar también con arrays.

A continuación un pequeño ejemplo:
Tengo un array de Integers (en realidad pueden ser cualquier tipo de datos: byte, double, DateTime, etc), quiero eliminar los que se repiten y convertirlos a cadenas de caracteres:

int[] misNumeros; // Contiene muchos números.
strings[] misCadenas; // aquí guardo los que no se repiten, luego de convertirlos a strings.

misCadenas = misNumeros.Distinct().Select(c => c.ToString()).ToArray();

Como los métodos Select y Distinct devuelven un IEnumerable, lo convierto a Array usando el método ToArray().

Otro ejemplo: creo un array con números del 0 al 100, realizo algunas operaciones aritméticas cualquiera, elimino los repetidos, los ordeno en orden descendente, y finalmente los convierto a un array de cadena de caracteres:

int[] nums = Enumerable.Range(0, 100).ToArray();

nums = nums.Select(c => c * DateTime.Now.Millisecond / DateTime.Now.Second + DateTime.Now.Millisecond).ToArray();

string [] calculatedNums = nums.Distinct().OrderByDescending(c => c).Select(c => c.ToString()).ToArray();

Nótese cómo siempre utilizo ToArray() para convertir de IEnumerable a Array.