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);
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.
La verdad si entiendo aunque no se que es.
Esta genial, lo he entendido, y soy novato
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
Muy buen aporte, gracias