Arreglos en C#

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 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#.

//Declaración erronea
int valores[];


//Declaración valida
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.

int[] valores; //valores sin inicializar
valores = new int[100];  //100 elementos
valores = new int[20];  //ahora contiene 20 elementos

 

Arreglos multi-dimensionales

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

//Arreglos unidimensionales o de dimensión simple
int[] valores1;                         //sin inicializar
int[] valores2 = new int[50];
 
//Arreglos multidimensionales
int[,] valores1;                      //sin inicializar
int[,] valores2 = new int[3,7];
int[,,] valores3 = new int[3,4,2];    //Arreglo de tres dimensiones
 
//Arreglo de arreglos
int[][] matriz;                      //sin inicializar
 
//Los arreglos de arreglos se inicializan de manera diferente
int[][] matriz = new int[3][];
for (int i = 0; i < matriz.Length; i++)
{
   matriz[i] = new int[4];
}

 

Inicialización con valores

Hay varias formas de inicializar los arreglos:

int[] valores = new int[10] {0,1,2,3,4,5,6,7,8,9};
string[] paises = new string[5] {"Argentina", "Bolivia", "Peru","Chile","Colombia"};
 
//Inicializacion omitiendo el tamaño de la matriz
int[] valores = new int[] {0,1,2,3,4,5,6,7,8,9};
string[] paises = new string[] {"Argentina", "Bolivia", "Peru","Chile","Colombia"};
 
//Tambien podemos omitir el operador new
 
int[] valores =  {0,1,2,3,4,5,6,7,8,9};
string[] paises = {"Argentina", "Bolivia", "Peru","Chile","Colombia"};

 

Para los arreglos multidimensionales la cosa cambia un poco:

int[,] numeros = new int[3, 4] { {1, 2,3,4}, {9, 8,7,6}, {7, 6,2,5} };
string[,] regiones = new string[2, 3] { {"Argentina","Brasil","Peru"}, {"USA",";Mexico","Costa Rica"} };
 
//Tambien podemos omitir el tamaño de la matriz
int[,] numeros = new int[,] { {1, 2,3,4}, {9, 8,7,6}, {7, 6,2,5} };
string[,] regiones = new string[,] { {"Argentina","Brasil","Peru"}, {"USA",";Mexico","Costa Rica"} };
 
//Y tambien podemos olvidarnos del operador
int[,] numeros =  { {1, 2,3,4}, {9, 8,7,6}, {7, 6,2,5} };
string[,] regiones = { {"Argentina","Brasil","Peru"}, {"USA",";Mexico","Costa Rica"} };

 

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

valores[1]      = 4;   //Cambia el valor del indice 1 a 4
numeros[2,1] = 10;   //Cambia el valor de indice 2,1 a 10
 
//En un arreglo de arreglos:
matriz[2][1] = 4;

 

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:

System.Console.WriteLine(valores.Length);
System.Console.WriteLine(numeros.Length);
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.

int[] valores = {3, 5, 2, 1, 5, 3, 7, 9, 8};
foreach (int i in valores)
{
   Console.Write("{0} ", i);
}
 
Console.Write(" ");
 
//también en arreglos multidimensionales
int[,] numeros = new int[2, 3] {{5,2,1}, {7,4,5}, {2,9 ,10}};
foreach(int i in numeros)
{
   Console.Write("{0} ", i);
}

 

La salida del programa anterior es:

3 5 2 1 5 3 7 9 8
5 2 1 7 4 5 2 9 10

 

Para acceder a los valores de arreglos mas complejos podemos utilizar sentencias foreach anidados.

Dejar una Respuesta