Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Los arrays (o matrices) también es algo que podíamos usar en VB6, si bien la
forma en que se almacena en la memoria y la forma en que podemos usarlas en
Visual Basic 2005 ha cambiado, aunque la forma en que podemos usarlas es
idéntica a VB6... o casi.
Tal como ocurre en VB6, al realizar esta declaración lo que conseguimos es definir
un array de 11 elementos: desde cero hasta 10. Si bien, en VB6 tenemos la
posibilidad de indicar cual era el valor del índice inferior predeterminado de los
arrays, podemos elegir entre cero y uno mediante la instrucción Option Base
indicando a continuación un 0 o un 1. En Visual Basic 2005 no existe esa
instrucción, es más en Visual Basic 2005 todos los arrays deben tener como índice
inferior el valor cero.
Otra posibilidad que teníamos en VB6 era indicar el rango de índices que podíamos
asignar, esto lo lográbamos usando la cláusula To al definir un array, por ejemplo:
Lo que si podemos hacer en Visual Basic 2005 es usar To para indicar el valor
máximo del índice, aunque no tiene la misma "potencia" que en VB6, al menos de
esta forma el código resultará más legible:
Con el código anterior estamos creando un array de tipo String con tres valores
cuyos índices van de cero a dos.
nombres(0,0)= Juan
nombres(0,1)= Pepe
nombres(1,0)= Ana
nombres(1,1)= Eva
¿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 de Visual Basic
2005 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.