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.

3 Respuestas a “Arreglos en C#”
  1. Es buen post pero para alguien que va comenzando esta un poco confuso, generalmente quien busca estos post son personas que no conocen aun mucho sobre programacion, por lo tanto creo que mejoraria con ejemplos mas reales y comentando las lineas, saludos y gracias

Dejar una Respuesta