Una tabla multidimensional es una tabla cuyos elementos se encuentran
organizando una estructura de varias dimensiones. Para definir este tipo de
tablas se usa una sintaxis similar a la usada para declarar tablas
unidimensionales pero separando las diferentes dimensiones mediante comas (,)
Por ejemplo, una tabla multidimensional de elementos de tipo int
que conste de 12 elementos puede tener sus elementos distribuidos en dos
dimensiones formando una estructura 3x4 similar a una matriz de la forma:
1 2
3 4
5 6
7 8
9 10 11 12
Esta tabla se podría declarar
así:
int[,] tablaMultidimensional = new
int[3,4] {{1,2,3,4}, {5,6,7,8}, {9,10,11,12}};
En realidad no es necesario
indicar el número de elementos de cada dimensión de la tabla ya que pueden
deducirse de los valores explícitamente indicados entre llaves, por lo que la
definición anterior es similar a esta:
int[,] tablaMultidimensional = new
int[,] {{1,2,3,4}, {5,6,7,8}, {9,10,11,12}};
Incluso puede reducirse aún más
la sintaxis necesaria quedando tan sólo:
int[,]
tablaMultidimensional = {{1,2,3,4},
{5,6,7,8}, {9,10,11,12}};
Si no queremos indicar
explícitamente los elementos de la tabla al declararla, podemos obviarlos pero
aún así indicar el tamaño de cada dimensión de la tabla (a los elementos se les
daría el valor por defecto de su tipo de dato) así:
int[,] tablaMultidimensional = new
int[3,4];
También podemos no especificar ni
siquiera el número de elementos de la tabla de esta forma (tablaMultidimensional contendría ahora null):
int[,]
tablaMultidimensional;
Aunque los ejemplos de tablas
multidimensionales hasta ahora mostrados son de tablas de dos dimensiones, en
general también es posible crear tablas de cualquier número de dimensiones. Por
ejemplo, una tabla que almacene 24 elementos de tipo int y valor 0 en una
estructura tridimensional 3x4x2 se declararía así:
int[,,] tablaMultidimensional = new
int[3,4,2];
El acceso a los elementos de una
tabla multidimensional es muy sencillo: sólo hay que indicar los índices de la
posición que ocupe en la estructura multidimensional el elemento al que se
desee acceder. Por ejemplo, para incrementar en una unidad el elemento que
ocupe la posición (1,3,2) de la tabla anterior se haría (se indiza desde 0):
tablaMultidimensional[0,2,1]++;
Nótese que tanto las tablas
dentadas como las tablas multidimensionales pueden ser utilizadas tanto para
representar estructuras matriciales como para, en general, representar
cualquier estructura de varias dimensiones. La diferencia entre ambas son:
·
Como las tablas dentadas son tablas de tablas, cada uno
de sus elementos puede ser una tabla de un tamaño diferente. Así, con las
tablas dentadas podemos representar matrices en las que cada columna tenga un
tamaño distinto (por el aspecto “aserrado” de este tipo de matrices es por lo
que se les llama tablas dentadas), mientras que usando tablas
multidimensionales sólo es posible crear matrices rectangulares o cuadradas.
Las estructuras aserradas pueden simularse usando matrices multidimensionales
con todas sus columnas del tamaño de la columna más grande necesaria, aunque
ello implica desperdiciar mucha memoria sobre todo si los tamaños de cada
columna son muy diferentes y la tabla es grande De todos modos, las estructuras
más comunes que se usan en la mayoría de aplicaciones suelen ser rectangulares
o cuadradas.
·
Los tiempos que se tardan en crear y destruir tablas
dentadas son superiores a los que se tardan en crear y destruir tablas
multidimensionales. Esto se debe a que las primeras son tablas de tablas
mientras que las segundas son una única tabla, Por ejemplo, para crear una
tabla dentada [100][100] hay que crear 101 tablas (la tabla dentada más las 100
tablas que contiene), mientras que para crear una crear una tabla bidimensional
[100,100] hay que crear una única tabla.
·
Las tablas dentadas no forman parte del CLS, por lo que
no todos los lenguajes gestionados los tienen porqué admitir. Por ejemplo
Visual Basic.NET no las admite, por lo que al usarlas en miembros públicos
equivale a perder interoperabilidad
con estos lenguajes.