Compartir a través de


Diferencias entre pasar parámetros por valor y por referencia en Visual Basic

Al pasar uno o varios argumentos a un procedimiento, cada argumento corresponde a un elemento de programación subyacente en el código que realiza la llamada. Puede pasar el valor de este elemento subyacente o bien una referencia a este. Esto se conoce como mecanismo de paso.

Pasar por valor

Para pasar un argumento por valor , especifique la palabra clave ByVal para el parámetro correspondiente en la definición del procedimiento. Cuando se usa este mecanismo de paso, Visual Basic copia el valor del elemento de programación subyacente en una variable local del procedimiento. El código de procedimiento no tiene acceso al elemento subyacente en el código que realiza la llamada.

Paso por referencia

Para pasar un argumento por referencia , especifique la palabra clave ByRef para el parámetro correspondiente en la definición del procedimiento. Cuando se usa este mecanismo de paso, Visual Basic proporciona al procedimiento una referencia directa al elemento de programación subyacente en el código de llamada.

Mecanismo de Paso y Tipo de Elemento

La elección del mecanismo de paso no es la misma que la clasificación del tipo de elemento subyacente. El paso por valor o por referencia se refiere a lo que Visual Basic proporciona al código del procedimiento. Un tipo de valor o tipo de referencia hace referencia a cómo se almacena un elemento de programación en la memoria.

Sin embargo, el mecanismo de paso y el tipo de elemento están interrelacionados. El valor de un tipo de referencia es un puntero a los datos en otra parte de la memoria. Esto significa que, cuando se pasa un tipo de referencia por valor, el código del procedimiento tiene un puntero a los datos del elemento subyacente, aunque no pueda acceder al propio elemento subyacente. Por ejemplo, si el elemento es una variable de matriz, el código de procedimiento no tiene acceso a la propia variable, pero puede acceder a los miembros de la matriz.

Capacidad de modificar

Cuando se pasa un elemento no modificable como argumento, el procedimiento nunca puede modificarlo en el código que realiza la llamada, ya sea que se pase ByVal o ByRef.

Para un elemento modificable, en la tabla siguiente se resume la interacción entre el tipo de elemento y el mecanismo de paso.

Tipo de elemento Pasado ByVal Pasado ByRef
Tipo de valor (contiene solo un valor) El procedimiento no puede cambiar la variable ni ninguno de sus miembros. El procedimiento puede cambiar la variable y sus miembros.
Tipo de referencia (contiene un puntero a una clase o instancia de estructura) El procedimiento no puede cambiar la variable, pero puede cambiar los miembros de la instancia a la que apunta. El procedimiento puede cambiar la variable y los miembros de la instancia a la que apunta.

Consulte también