Partilhar via


Como: Aumentar o tempo de vida da variável

Normalmente, uma variável deixa de existir quando o elemento de programação no qual ela é declarada deixa de existir.Entretanto, você pode tornar sua vida útil maior que a do elemento que a contém ao declará-la com a palavra-chave Static (Visual Basic).

Para obter mais informações, consulte Tempo de vida no Visual Basic.

Para fazer uma variável durar mais que o elemento que a contém

  • Se a variável é uma variável local (declarada dentro de um procedimento), inclua a palavra-chave Static na caixa Instrução Dim (Visual Basic) que a declara.Uma variável estática existe enquanto existir a classe ou módulo que contém o procedimento que declara a variável.

    Se um variável local estiver dentro de um procedimento Compartilhamento (Visual Basic), o procedimento e suas variáveis existem enquanto o aplicativo for executado.Não use Static nesse caso.

  • Se a variável é uma variável de membro (declarada em uma classe ou estrutura, fora de qualquer procedimento), inclua a palavra-chave Shared na instrução Dim que a declara.Uma variável compartilhada não é associada a qualquer instância de sua classe ou estrutura, e existe enquanto o aplicativo for executado.Você não pode usar Static em um variável de membro.

    Se um variável de membro é declarada em um módulo, ela sempre existe, enquanto o aplicativo for executado.Não use Shared nesse caso.

Exemplo

O exemplo a seguir declara uma variável com a palavra-chave Static (Visual Basic).(Observe que você não precisa da palavra-chave Dim quando o Instrução Dim (Visual Basic) usa um modificador, como Static.)

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

No exemplo anterior, a variável applesSold continua a existir depois que o procedimento runningTotal retorna para o código de chamada.Na próxima vez em que runningTotal é chamado, applesSold manterá seu valor calculado anteriormente.

Se applesSold tivesse sido declarada sem usar Static, os valores acumulados anteriormente não poderiam ser preservados entre chamadas para runningTotal.Na próxima vez em que runningTotal fosse chamado applesSold teria sido recriada e inicializada com 0, e runningTotal teria simplesmente retornado o mesmo valor com o qual ele foi chamado.

Compilando o código

Você pode inicializar o valor de uma variável local estática como parte da sua declaração.Se você declarar uma matriz para ser Static, você pode inicializar sua ordem (número de dimensões), o tamanho de cada dimensão e os valores dos elementos individuais.

Variáveis estáticas de mesmo nome

Você pode declarar variáveis estáticas com o mesmo nome em mais de um procedimento.Se você fizer isso, o compilador Visual Basic considera cada variável como um elemento separado.A inicialização de um dessas variáveis não afeta os valores das outras.O mesmo se aplica se você definir um procedimento com um conjunto de sobrecargas e declarar uma variável estática com o mesmo nome em cada sobrecarga.

Elementos Continentes para Variáveis Estáticas

Você pode declarar uma variável local estática em uma classe, isto é, em um procedimento dessa classe.No entanto, você não pode declarar uma variável local estática em uma estrutura, nem como um membro de estrutura nem como um variável local de um procedimento dentro dessa estrutura.

Segurança

No exemplo anterior, você pode produzir o mesmo tempo de vida, declarando applesSold em nível de módulo.Se você tivesse alterado o escopo de uma variável dessa maneira, no entanto, o procedimento não teria mais acesso exclusivo a ele.Como outros procedimentos poderiam acessar applesSold e alterar seu valor, o total em execução poderia ser não confiável e o código poderia ser mais difícil manter.

Consulte também

Conceitos

Tempo de vida no Visual Basic

Características do elemento declarado

O Escopo no Visual Basic

Níveis de acesso em Visual Basic

Variáveis no Visual Basic

Declaração de variável no Visual Basic

Sobrecarga de procedimento