Está en la página 1de 7

Matrices o Arreglos (Arrays)

Es una coleccin de datos que tienen algo en comn que se referencian con un solo nombre y tienen
un ndice diferente.

En las matrices de C#, los ndices empiezan en cero.


Cuando se declara una matriz, los corchetes ([]) deben ir despus del tipo, no despus del
identificador. Colocar los corchetes despus del identificador no es sintcticamente vlido en C#.

int[] table; // not int table[];

Otro detalle es que el tamao de la matriz no forma parte de su tipo, como ocurre en el lenguaje C.
Esto permite declarar una matriz y asignarle cualquier matriz de objetos int, independientemente de
la longitud de la matriz.

int[] numbers; // declare numbers as an int array of any size


numbers = new int[10]; // numbers is a 10-element array
numbers = new int[20]; // now it's a 20-element array

Declarar matrices
C# admite matrices de una dimensin, matrices multidimensionales (matrices rectangulares) y
matrices de matrices (matrices escalonadas).
En C# se crea matrices: de la siguiente manera:

Matrices unidimensionales:
int[] numbers = new int[5];

Matrices Bidimensional:
string[,] names = new string[5,4];

Inicializar matrices
C# proporciona mtodos simples y sencillos para inicializar matrices en el momento de la declaracin
encerrando los valores iniciales entre llaves ({}). Los siguientes ejemplos muestran diferentes modos
de inicializar diferentes tipos de matrices.
Nota Si no inicializa una matriz en el momento de la declaracin, sus miembros se inicializan
automticamente con el valor inicial predeterminado para el tipo de matriz. Adems, si declara la
matriz como campo de un tipo, se establecer con el valor predeterminado null cuando cree la
instancia del tipo.

Matrices unidimensionales
int[] numbers = new int[5] {1, 2, 3, 4, 5};
string[] names = new string[3] {"Matt", "Joanne", "Robert"};

El tamao de la matriz se puede omitir, como se indica a continuacin:


int[] numbers = new int[] {1, 2, 3, 4, 5};
string[] names = new string[] {"Matt", "Joanne", "Robert"};
Tambin se puede omitir el operador new si se utiliza un inicializador como el siguiente:
int[] numbers = {1, 2, 3, 4, 5};
string[] names = {"Matt", "Joanne", "Robert"};

Matrices multidimensionales
int[,] numbers = new int[3, 2] { {1, 2}, {3, 4}, {5, 6} };
string[,] siblings = new string[2, 2] { {"Mike","Amy"}, {"Mary","Albert"}
};
El tamao de la matriz se puede omitir, como se indica a continuacin:
int[,] numbers = new int[,] { {1, 2}, {3, 4}, {5, 6} };
string[,] siblings = new string[,] { {"Mike","Amy"}, {"Mary","Albert"} };
Tambin se puede omitir el operador new si se utiliza un inicializador como el siguiente:
int[,] numbers = { {1, 2}, {3, 4}, {5, 6} };
string[,] siblings = { {"Mike", "Amy"}, {"Mary", "Albert"} };

Acceso a miembros de matrices


El acceso a los miembros de una matriz es sencillo y similar al de los miembros de una matriz de C o
C++. Por ejemplo, el siguiente cdigo crea una matriz denominada numbers y, a continuacin,
asigna un 5 al quinto elemento de la matriz:
int[] numbers = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0};
numbers[4] = 5;

El siguiente cdigo declara una matriz multidimensional y asigna el valor 5 al miembro ubicado
en [1, 1]:
int[,] numbers = { {1, 2}, {3, 4}, {5, 6}, {7, 8}, {9, 10} };

numbers[1, 1] = 5;

Sin embargo, con matrices multidimensionales, utilizar un bucle for anidado proporciona ms control
sobre los elementos de la matriz.

Como declarar e inicializar un arreglo en C#


Cuando vayamos a declarar un arreglo en debemos colocar los corchetes despus de tipo de dato.
En C/C++ se estila poner los corchetes despus del identificador, eso causa un error de compilacin
en C#-

//Declaracin erronea

1. int valores[];

2.

3. //Declaracin valida

4. int[] valores;
En C# podemos indicar el tamao del arreglo luego de la declaracin. Esto nos permite decidir que
tamao va a tener el arreglo segn lo que necesitemos.

int[] valores; //valores sin inicializar

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

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

Arreglos multi-dimensionales
En C# tambin podemos declarar arreglos multidimensionales, aqu unos ejemplos:

//Arreglos unidimensionales o de dimensin simple

1. int[] valores1; //sin inicializar

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

3.

4. //Arreglos multidimensionales

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

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

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

8.

9. //Arreglo de arreglos

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

11.

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

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

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


15. {

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

17. }

Pueden combinarse los diferentes tipos de declaracin.


Inicializacin
Hay varias formas de inicializar los arreglos:

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

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

2.

3. //Inicializacion omitiendo el tamao de la matriz

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

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

6.

7. //Tambien podemos omitir el operador new

8.

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

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

11.

Para los arreglos multidimensionales la cosa cambia un poco:

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 tamao 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","C


osta 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:

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 tamao 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# tambin podemos utilizar la sentencia foreach, es una manera simple de acceder a los
valores de un arreglo.

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. //tambin 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:

1. 3 5 2 1 5 3 7 9 8

2. 5 2 1 7 4 5 2 9 10

También podría gustarte