Static (Visual Basic)
Actualización: noviembre 2007
Especifica si una o varias variables locales declaradas deben seguir existiendo y conservar sus últimos valores tras la finalización del procedimiento en el que se han declarado.
Comentarios
Normalmente, una variable local de un procedimiento deja de existir en cuanto finaliza el procedimiento. Una variable estática sigue existiendo y conserva su valor más reciente. La próxima vez que su código llame al procedimiento, no se reinicializa la variable y sigue conservando el último valor asignado. Una variable estática sigue existiendo durante la vigencia de la clase o módulo en el que está definida.
Reglas
Contexto de la declaración. Sólo puede utilizar Static en variables local. Esto significa que el contexto de la declaración para una variable Static debe ser un procedimiento o un bloque en un procedimiento y no puede ser un archivo de código fuente, un espacio de nombres, una clase, una estructura o un módulo.
No puede utilizar Static dentro de un procedimiento de estructura.
No se pueden deducir los tipos de datos de las variables locales Static. Para obtener más información, vea Inferencia de tipo de variable local.
Modificadores combinados. No se puede especificar Static junto con ReadOnly, Shadows o Shared en la misma declaración.
Comportamiento
El comportamiento de cualquier variable local depende de si se declara en un procedimiento Shared. Si el procedimiento es Shared, se comparten todas sus variables locales automáticamente. Esto incluye las variables Static. Únicamente existe una copia de este tipo de variable para toda la aplicación. Llama a un procedimiento Shared utilizando el nombre de clase y no una variable que señala a una instancia de la clase.
Si el procedimiento no es Shared, sus variables locales son variables de instancia. Esto incluye las variables Static. Existe una copia independiente de cada variable en todas las instancias de la clase. Llama a un procedimiento no compartido utilizando una variable que señala a una instancia concreta de la clase. Cualquier variable de esa instancia es independiente de una variable con el mismo nombre de otra instancia. Por consiguiente, pueden contener valores diferentes.
Ejemplo
El siguiente ejemplo muestra el uso de Static.
Function updateSales(ByVal thisSale As Decimal) As Decimal
Static totalSales As Decimal = 0
totalSales += thisSale
Return totalSales
End Function
El valor totalSales de la variable Static únicamente se inicializa en 0 una vez. Cada vez que se escribe updateSales, totalSales sigue teniendo el valor calculado más reciente.
El modificador Static se puede utilizar en este contexto:
Instrucción Dim (Visual Basic)
Vea también
Conceptos
Período de duración en Visual Basic
Declaración de variable en Visual Basic
Inferencia de tipo de variable local