Static (Visual Basic)

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 mientras dure la clase o módulo en donde está definida.

Reglas

  • Contexto de la declaración. Sólo se puede utilizar Static en variables locales. 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 (Visual Basic).

  • Modificadores combinados. No se puede especificar Static junto con ReadOnly, Shadows o Shared en la misma declaración.

Behavior

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

Referencia

Shadows (Visual Basic)

Shared (Visual Basic)

Conceptos

Período de duración en Visual Basic

Declaración de variable en Visual Basic

Inferencia de tipo de variable local (Visual Basic)

Otros recursos

Estructuras (Visual Basic)

Objetos y clases de Visual Basic