Una tabla unidimensional es un tipo especial de variable que es capaz
de almacenar en su interior y de manera ordenada uno o varios datos de un
determinado tipo. Para declarar variables de este tipo especial se usa la
siguiente sintaxis:
<tipoDatos>[]
<nombreTabla>;
Por ejemplo, una tabla que pueda
almacenar objetos de tipo int se declara así:
int[]
tabla;
Con esto la tabla creada no
almacenaría ningún objeto, sino que valdría null. Si se desea que
verdaderamente almacene objetos hay que indicar cuál es el número de objetos
que podrá almacenar, lo que puede hacerse usando la siguiente sintaxis al
declararla:
<tipoDatos>[] <nombreTabla> = new
<tipoDatos>[<númeroDatos>];
Por ejemplo, una tabla que pueda
almacenar 100 objetos de tipo int se declara así:
int[] tabla = new int[100];
Aunque también sería posible
definir el tamaño de la tabla de forma separada a su declaración de este modo:
int[] tabla;
tabla = new int[100];
Con esta última sintaxis es
posible cambiar dinámicamente el número de elementos de una variable tabla sin
más que irle asignando nuevas tablas. Ello no significa que una tabla se pueda
redimensionar conservando los elementos que tuviese antes del cambio de tamaño,
sino que ocurre todo lo contrario: cuando a una variable tabla se le asigna una
tabla de otro tamaño, sus elementos antiguos son sobreescritos por los nuevos.
Si se crea una tabla con la
sintaxis hasta ahora explicada todos sus elementos tendrían el valor por
defecto de su tipo de dato. Si queremos darles otros valores al declarar la
tabla, hemos de indicarlos entre llaves usando esta sintaxis:
<tipoDatos>[]
<nombreTabla> = new <tipoDatos>[] {<valores>};
Ha de especificarse tantos <valores> como número de elementos se desee que
tenga la tabla, y si son más de uno se han de separar entre sí mediante comas (,)
Nótese que ahora no es necesario indicar el número de elementos de la tabla
(aunque puede hacerse) si se desea), pues el compilador puede deducirlo del
número de valores especificados. Por ejemplo, para declarar una tabla de cuatro
elementos de tipo int con valores 5,1,4,0 se podría hacer lo
siguiente:
int[] tabla = new int[] {5,1,4,0};
Incluso se puede compactar aún
más la sintaxis declarando la tabla así:
int[]
tabla = {5,1,4,0};
También podemos crear tablas cuyo
tamaño se pueda establecer dinámicamente a partir del valor de cualquier
expresión que produzca un valor de tipo entero. Por ejemplo, para crear una
tabla cuyo tamaño sea el valor indicado por una variable de tipo int
(luego su valor será de tipo entero) se haría:
int i = 5;
...
int[] tablaDinámica = new int[i];
A la hora de acceder a los
elementos almacenados en una tabla basta indicar entre corchetes, y a
continuación de la referencia a la misma, la posición que ocupe en la tabla el
elemento al que acceder. Cuando se haga hay que tener en cuenta que en C# las
tablas se indexan desde 0, lo que significa que el primer elemento de la tabla
ocupará su posición 0, el segundo ocupará la posición 1, y así sucesivamente
para el resto de elementos. Por ejemplo, aunque es más ineficiente, la tabla
declarada en el último fragmento de código de ejemplo también podría haberse
definido así:
int[] tabla = new int[4];
tabla[0] = 5;
tabla[1]++; // Por defecto se inicializó a 0, luego
ahora el valor de tabla[1] pasa a ser 1
tabla[2]
= tabla[0] – tabla[1]; // tabla[2] pasa
a valer 4, pues 5-4 = 1
// El
contenido de la tabla será {5,1,4,0}, pues tabla[3] se inicializó por defecto a
0.
Hay que tener cuidado a la hora
de acceder a los elementos de una tabla ya que si se especifica una posición
superior al número de elementos que pueda almacenar la tabla se producirá una
excepción de tipo System.OutOfBoundsException. En el Tema 16: Instrucciones se explica qué
son las excepciones, pero por ahora basta considerar que son objetos que
informan de situaciones excepcionales (generalmente errores) producidas durante
la ejecución de una aplicación. Para evitar este tipo de excepciones puede
consultar el valor del campo
de sólo lectura Length
que está asociado a toda tabla y contiene el número de elementos de la misma.
Por ejemplo, para asignar un 7 al último elemento de la tabla anterior se
haría:
tabla[tabla.Length
– 1] = 7; // Se resta 1 porque
tabla.Length devuelve 4 pero el último // elemento de la tabla es tabla[3]