Compartir a través de


Cómo: Prolongar la duración de una variable

Actualización: noviembre 2007

Normalmente, una variable deja de existir cuando el elemento de programación en el que se declara deja de existir. Sin embargo, puede alargar su duración más que la de su elemento contenedor declarándola con la palabra clave Static (Visual Basic).

Para obtener más información, consulte Período de duración en Visual Basic.

Para alargar la duración de una variable más que la de su elemento contenedor

  • Si la variable es una variable local (declarada dentro de un procedimiento), incluya la palabra clave Static en la instrucción Instrucción Dim (Visual Basic) que la declara. Una variable estática existe mientras exista la clase o módulo que contiene el procedimiento que declara la variable.

    Si una variable local está dentro de un procedimiento Shared (Visual Basic), el procedimiento y sus variables existen siempre que la aplicación esté en ejecución. No utilice Static en este caso.

  • Si la variable es una variable miembro (declarada dentro de una clase o estructura, fuera de todo procedimiento), incluya la palabra clave Shared en la instrucción Dim que la declara. Una variable compartida no está asociada a ninguna instancia de su clase o estructura y existe siempre que la aplicación esté en ejecución. No puede utilizar Static en una variable miembro.

    Si una variable miembro se declara en un módulo, existe siempre que la aplicación esté en ejecución. No utilice Shared en este caso.

Ejemplo

El ejemplo siguiente declara una variable con la palabra clave Static (Visual Basic). (Observe que no necesita la palabra clave Dim cuando Instrucción Dim (Visual Basic) utiliza un modificador como Static.)

Function runningTotal(ByVal num As Integer) As Integer
    Static applesSold As Integer
    applesSold = applesSold + num
    Return applesSold
End Function

En el ejemplo anterior, la variable applesSold continúa existiendo después de que el procedimiento runningTotal vuelve al código de llamada. La siguiente vez que se llama a runningTotal, applesSold conserva el valor calculado anteriormente.

Si applesSold se hubiera declarado sin utilizar Static, los valores acumulados anteriores no se conservarían a través de llamadas a runningTotal. La siguiente vez que se llamara a runningTotal, applesSold se habría vuelto a crear y se habría inicializado a 0. runningTotal habría devuelto simplemente el mismo valor que el que tenía cuando fue llamado.

Compilar el código

Puede inicializar el valor de una variable local estática en la propia declaración. Si declara una matriz como Static, puede inicializar su rango (número de dimensiones), la longitud de cada dimensión y los valores de los elementos individuales.

Variables estáticas del mismo nombre

Puede declarar variables estáticas con el mismo nombre en más de un procedimiento. Si hace esto, el compilador de Visual Basic considera que cada variable es un elemento separado. La inicialización de una de estas variables no afecta al valor de las demás. Lo mismo ocurre si se define un procedimiento con un conjunto de sobrecargas y se declara una variable estática con el mismo nombre en cada una.

Elementos contenedores para variables estáticas

Puede declarar una variable local estática en una clase, es decir, dentro de un procedimiento de esa clase. Sin embargo, no puede declarar una variable local estática dentro de una estructura, ya sea como miembro de una estructura o como una variable local de un procedimiento dentro de esa estructura.

Seguridad

En el ejemplo anterior, puede generar la misma duración si declara applesSold en el nivel de módulo. No obstante, si ha cambiado de esta forma el ámbito de una variable, el procedimiento dejará de tener acceso exclusivo a él. Dado que otros procedimientos podrían tener acceso a applesSold y cambiar su valor, el total acumulado no sería fiable, lo que podría dificultar el mantenimiento del código.

Vea también

Conceptos

Período de duración en Visual Basic

Características de los elementos declarados

Ámbito en Visual Basic

Niveles de acceso en Visual Basic

Variables en Visual Basic

Declaración de variable en Visual Basic

Sobrecarga de procedimientos