Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Los arrays de .NET siempre deben tener el valor cero como índice inferior.
Lo que si podemos hacer en Visual Basic .NET es usar To para indicar el valor
máximo del índice:
Con el código anterior estamos creando un array de tipo String con tres valores
cuyos índices van de cero a dos.
Si el array es bidimensional (o con más dimensiones), también podemos
inicializarlos al declararlo, pero en este caso debemos usar doble juego de llaves:
nombres(0,0)=Juan
nombres(0,1)= Pepe
nombres(1,0)= Ana
nombres(1,1)= Eva
Si bien tanto ReDim como ReDim Preserve se pueden usar en arrays de cualquier
número de dimensiones, en los arrays de más de una dimensión solamente
podemos cambiar el tamaño de la última dimensión.
¿Cual es el problema?
otros = nombres
nombres(0) = "Antonio"
¿Qué ha ocurrido?
Que debido a que los arrays son tipos por referencia, solamente existe una copia
de los datos y tanto la variable nombres como la variable otros lo que contienen es
una referencia (o puntero) a los datos.
Si realmente queremos tener copias independientes, debemos hacer una copia del
array nombres en el array otros, esto es fácil de hacer si usamos el método
CopyTo. Éste método existe en todos los arrays y nos permite copiar un array en
otro empezando por el índice que indiquemos.
El único requisito es que el array de destino debe estar inicializado y tener espacio
suficiente para contener los elementos que queremos copiar.
En el siguiente código de ejemplo hacemos una copia del contenido del array
nombres en el array otros, de esta forma, el cambio realizado en el elemento
cero de nombres no afecta al del array otros.
ReDim otros(nombres.Length)
nombres.CopyTo(otros, 0)
nombres(0) = "Antonio"
Además del método CopyTo, los arrays tienen otros miembros que nos pueden ser
de utilidad, como por ejemplo la propiedad Length usada en el ejemplo para saber
cuantos elementos tiene el array nombres.
Para finalizar este tema, solo nos queda por decir, que los arrays realmente son
tipos de datos derivados de la clase Array y por tanto disponen de todos los
miembros definidos en esa clase, aunque de esto hablaremos en la próxima
lección, en la que también tendremos la oportunidad de profundizar un poco más
en los tipos por referencia y en como podemos definir nuestros propios tipos de
datos, tanto por referencia como por valor.