Estático (Visual Basic)

Especifica que uma ou mais variáveis locais declaradas devem continuar existindo e manter os valores mais recentes após a finalização do procedimento em que elas são declaradas.

Comentários

Normalmente, uma variável local em um procedimento deixa de existir assim que o procedimento é interrompido. Uma variável estática continua existindo e mantém o valor mais recente. Na próxima vez que o código chamar o procedimento, a variável não será reinicializada e ainda conterá o valor mais recente atribuído a ela. Uma variável estática continua existindo durante o tempo de vida da classe ou do módulo em que está definida.

Regras

  • Contexto da declaração. Você só pode usar Static em variáveis locais. Isso significa que o contexto de declaração para uma variável Static precisa ser um procedimento ou um bloco em um procedimento e não pode ser um arquivo de origem, um namespace, uma classe, uma estrutura ou um módulo.

    Você não pode usar Static dentro de um procedimento de estrutura.

  • Os tipos de dados de vaiáveis locais Static não podem ser inferidos. Para obter mais informações, confira Inferência de tipo de variável local.

  • Modificadores combinados. Você não pode especificar Static junto com ReadOnly, Shadows ou Shared na mesma declaração.

Comportamento

Quando você declara uma variável estática em um procedimento Shared, apenas uma cópia da variável estática está disponível para todo o aplicativo. Você chama um procedimento Shared usando o nome da classe, não uma variável que aponta para uma instância da classe.

Quando você declara uma variável estática em um procedimento que não é Shared, apenas uma cópia da variável está disponível para cada instância da classe. Você chama um procedimento não compartilhado usando uma variável que aponta para uma instância específica da classe.

Exemplo

O exemplo a seguir demonstra o uso de Static.

Function updateSales(ByVal thisSale As Decimal) As Decimal
    Static totalSales As Decimal = 0
    totalSales += thisSale
    Return totalSales
End Function

A variável StatictotalSales é inicializada para 0 apenas uma vez. Cada vez que você insere updateSales, totalSales ainda tem o valor mais recente que você calculou para ela.

O modificador Static pode ser usado neste contexto:

Instrução Dim

Confira também