Arreglos en C#

Por:ivancp, enviado 08 sep 2011
Los arreglos en C# (también conocidos como Arrays) al igual que en C/C++, son indexados iniciando en cero (0). La forma de trabajo es muy similar a la mayoría de lenguajes pero hay lagunas diferencias que notarán.

Como declarar e inicializar un arreglo en C#

Cuando vayamos a declarar un arreglo en debemos colocar los corchetes después de tipo de dato. En C/C++ se estila poner los corchetes después del identificador, eso causa un error de compilación en C#-

Code: Seleccionar todo
  1. //Declaración erronea

  2. int valores[];

  3.  

  4. //Declaración valida

  5. int[] valores;


En C# podemos indicar el tamaño del arreglo luego de la declaración. Esto nos permite decidir que tamaño va a tener el arreglo según lo que necesitemos.

Code: Seleccionar todo
  1. int[] valores; //valores sin inicializar

  2. valores = new int[100];  //100 elementos

  3. valores = new int[20];  //ahora contiene 20 elementos


Arreglos multi-dimensionales

En C# también podemos declarar arreglos multidimensionales, aquí unos ejemplos:

Code: Seleccionar todo
  1. //Arreglos unidimensionales o de dimensión simple

  2. int[] valores1;                         //sin inicializar

  3. int[] valores2 = new int[50];

  4.  

  5. //Arreglos multidimensionales

  6. int[,] valores1;                      //sin inicializar

  7. int[,] valores2 = new int[3,7];

  8. int[,,] valores3 = new int[3,4,2];    //Arreglo de tres dimensiones

  9.  

  10. //Arreglo de arreglos

  11. int[][] matriz;                      //sin inicializar

  12.  

  13. //Los arreglos de arreglos se inicializan de manera diferente

  14. int[][] matriz = new int[3][];

  15. for (int i = 0; i < matriz.Length; i++)

  16. {

  17.    matriz[i] = new int[4];

  18. }

Pueden combinarse los diferentes tipos de declaración.

Inicialización

Hay varias formas de inicializar los arreglos:
Code: Seleccionar todo
  1. int[] valores = new int[10] {0,1,2,3,4,5,6,7,8,9};

  2. string[] paises = new string[5] {"Argentina", "Bolivia", "Peru","Chile","Colombia"};

  3.  

  4. //Inicializacion omitiendo el tamaño de la matriz

  5. int[] valores = new int[] {0,1,2,3,4,5,6,7,8,9};

  6. string[] paises = new string[] {"Argentina", "Bolivia", "Peru","Chile","Colombia"};

  7.  

  8. //Tambien podemos omitir el operador new

  9.  

  10. int[] valores =  {0,1,2,3,4,5,6,7,8,9};

  11. string[] paises = {"Argentina", "Bolivia", "Peru","Chile","Colombia"};

  12.  


Para los arreglos multidimensionales la cosa cambia un poco:

Code: Seleccionar todo
  1. int[,] numeros = new int[3, 4] { {1, 2,3,4}, {9, 8,7,6}, {7, 6,2,5} };

  2. string[,] regiones = new string[2, 3] { {"Argentina","Brasil","Peru"}, {"USA",";Mexico","Costa Rica"} };

  3.  

  4. //Tambien podemos omitir el tamaño de la matriz

  5. int[,] numeros = new int[,] { {1, 2,3,4}, {9, 8,7,6}, {7, 6,2,5} };

  6. string[,] regiones = new string[,] { {"Argentina","Brasil","Peru"}, {"USA",";Mexico","Costa Rica"} };

  7.  

  8. //Y tambien podemos olvidarnos del operador

  9. int[,] numeros =  { {1, 2,3,4}, {9, 8,7,6}, {7, 6,2,5} };

  10. string[,] regiones = { {"Argentina","Brasil","Peru"}, {"USA",";Mexico","Costa Rica"} };



Para acceder a los miembros solo tenemos que citar el indice correcto en cada caso:

Code: Seleccionar todo
  1. valores[1]      = 4;   //Cambia el valor del indice 1 a 4

  2. numeros[2,1] = 10;   //Cambia el valor de indice 2,1 a 10

  3.  

  4. //En un arreglo de arreglos:

  5. matriz[2][1] = 4;

  6.  



En C# los arreglos son objetos

Una ventaja frente a C++ es que los arreglos son objetos (si con propiedades), la propiedas mas útil es lenght (longitud) que nos indica que tamaño tiene nuestro arreglo. Aqui un ejemplo:

Code: Seleccionar todo
  1.  System.Console.WriteLine(valores.Length);

  2. System.Console.WriteLine(numeros.Length);

  3. System.Console.WriteLine(regiones.Length);


Navegar por los valores del arreglo (foreach)

En C# también podemos utilizar la sentencia foreach, es una manera simple de acceder a los valores de un arreglo.

Code: Seleccionar todo
  1. int[] valores = {3, 5, 2, 1, 5, 3, 7, 9, 8};

  2. foreach (int i in valores)

  3. {

  4.    Console.Write("{0} ", i);

  5. }

  6.  

  7. Console.Write(" ");

  8.  

  9. //también en arreglos multidimensionales

  10. int[,] numeros = new int[2, 3] {{5,2,1}, {7,4,5}, {2,9 ,10}};

  11. foreach(int i in numeros)

  12. {

  13.    Console.Write("{0} ", i);

  14. }

  15.  



La salida del programa anterior es:
Code: Seleccionar todo
  1. 3 5 2 1 5 3 7 9 8

  2. 5 2 1 7 4 5 2 9 10



Para acceder a los valores de arreglos mas complejos podemos utilizar sentencias foreach anidados.
Referencias: http://msdn.microsoft.com/en-us/library ... 71%29.aspx

Otros Artículos en esta sección

¿Alguna duda? Sientete libre de hacer tus pruntas en nuestro:
foro de Programación »