Después de conocer los arreglos multidimensionales escalonados esta vez toca el turno de conocer otro tipo de arrelgos multidimensionales en C#: Los rectangulares. En pocas palabras podríamos decir que estos no son "arreglos de arreglos", sino que en realidad son matrices dado que no es posible declarar arreglos dentro de ellos como con los escalonados.

Instanciación

Como con todos los tipos por referencia podemos usar la palabra reservada new para instanciar estos arreglos, aunque esta vez es necesario incluír una coma , para separar las dimensiones en lugar de los corchetes cuadrados de manera consecutiva, es decir, si quiero algo de dos dimensiones en lugar de [][] debemos escribir [,]:

char [,] gato = new char[3, 3];

string [,,] rubik = new string[3, 3 ,3];

int [,,,] laMatrix = new int[8, 2, 7, 6];

Para este tipo de arreglos siempre es necesario precisar el tamaño de todas las dimensiones, ya que el espacio es asignado durante la asignación, a diferencia de los arreglos escalonados. El compilador nos indicará algún error si no utilizamos la misma cantidad de elementos para cada dimensión:

char [,] gato = // new char[3, 3] // El new es opcional
{
	{ 'x', 'o', 'x' },
	{ 'o', 'x', '-' },
	{ 'x', 'o', 'x' },
};

// Error de compilación, para 'gatoMalo' los arreglos internos deben ser de 2 elementos
char [,] gatoMalo = 
{
	{ 'x', 'x' },
	{ 'o', 'x', 'x' },
	{ 'o', 'x' },
};

Acceso a los elementos

Para acceder a los elementos debemos recurrir a la combinación de [] y ,, también es importante recordar que los arreglos están indizados en 0.

Console.WriteLine( gato[0,0] ); // 'x'

gato[1,2] = 'y';
Console.WriteLine( gato[1,2] ); // 'y'

Propiedades y métodos

Al contrario de los otros arreglos, en este caso una llamada a la propiedad Length nos devolverá la cantidad total de elementos dentro del arreglo, en lugar de la cantidad de elementos dentro de esa dimensión, por ejemplo:

Console.WriteLine(gato.Length); // 9 = 3 x 3

Console.WriteLine(rubik.Length); // 27 = 3 x 3 x 3

Console.WriteLine(laMatrix.Length); // 672 = 8 x 2 x 7 x 6

Si lo que queremos es conocer el tamaño de determinada dimensión, es necesario hacer una llamada al método GetLength e indicando la dimensión a consultar

Console.WriteLine( "D0: " + laMatrix.GetLength(0) ); // 8
Console.WriteLine( "D1: " + laMatrix.GetLength(1) ); // 2
Console.WriteLine( "D2: " + laMatrix.GetLength(2) ); // 6
Console.WriteLine( "D3: " + laMatrix.GetLength(3) ); // 7

Lo que sigue

En siguientes posts conitnuaré hablando sobre C#, en particular de clases, métodos y parámetros, ¿quieres conocer sobre algo en específico? mándame un tweet o un correo electrónico ;)