Compartilhar via


Tempo de vida no Visual Basic

O tempo de vida de um elemento declarado é o período de tempo durante o qual ele está disponível para uso. As variáveis são os únicos elementos que têm tempo de vida. Para essa finalidade, o compilador trata os parâmetros de procedimento e função retorna como casos especiais de variáveis. O tempo de vida de uma variável representa o período de tempo durante o qual ele pode armazenar um valor. Seu valor pode mudar ao longo de sua tempo de vida, mas ele sempre mantém algum valor.

Diferentes tempos de vida

A variávelde membro (declarado no nível de módulo , fora de qualquer procedimento) normalmente tem o mesmo tempo de vida como o elemento no qual é declarada. Uma variável de compartilhada declarado em uma classe ou estrutura existe como uma cópia separada para cada instância da classe ou estrutura na qual é declarada. Cada tal variável tem o mesmo tempo de vida como sua instância. No entanto, um Shared variável tem apenas um único tempo de vida, que dura o tempo todo o aplicativo é executado.

A variávelde local (declaradas dentro de um procedimento) existe somente enquanto o procedimento no qual é declarada está sendo executado. Isso se aplica também para os parâmetros do procedimentoe para qualquer função retorno. No entanto, se esse procedimento chama a outros procedimentos, as variáveis locais retêm seus valores, enquanto os procedimentos chamados estão em execução.

Início do tempo de vida

Um local variáveldo tempo de vida começa quando o controle entra o procedimento no qual é declarada. Cada variável de local é inicializada com o valor padrão para o seu tipo de dados assim que o procedimento começa em execução. Quando o procedimento encontra um Dim demonstrativo que especifica os valores iniciais, ele define essas variáveis para esses valores, mesmo se o seu código já tinha atribuído a outros valores a eles.

Cada membro de umavariável de estruturaé inicializado como se fosse uma variávelde separada. Da mesma forma, cada elemento de uma matriz de variável é inicializado individualmente.

As variáveis declaradas dentro de um bloco dentro de um procedimento (como um For loop) são inicializados na entrada para o procedimento. Esses inicializações efeito se o seu código nunca executa o bloco ou não.

participante da vida útil

Quando um procedimento termina, os valores das variáveis locais não são preservados, e Visual Basic recupera sua memória. Na próxima vez que você chama o procedimento, todas as variáveis locais são criadas com afresh e reinicializadas.

Quando uma instância de uma classe ou estrutura é encerrado, suas variáveis não compartilhados perdem sua memória e seus valores. Cada nova instância da classe ou estrutura cria e reinicializa suas variáveis não compartilhados. No entanto, Shared variáveis são preservadas até parar de seu aplicativo em execução.

Extensão da vida útil

Se você declarar uma variável local com o Staticapalavra-chave, sua tempo de vida é maior do que o tempo de execução de seu procedimento. A tabela a seguir mostra como adeclaração de procedimentodetermina quanto tempo um Staticvariável existe.

Compartilhamento e o local do procedimento

Começa a estática variáveldetempo de vida

A variávelestática extremidades detempo de vida

Em um módulo (compartilhado por padrão)

The first time the procedure is called

Quando seu aplicativo interrompe a execução

Em uma classe, Shared (oprocedimento é não um membro de instância)

Na primeira vez que o procedimento é chamado em uma instância específica ou no nome da classe ou estrutura própria

Quando seu aplicativo interrompe a execução

Em uma instância de uma classe, não Shared (oprocedimento é um membro de instância)

Na primeira vez que o procedimento é chamado na instância específica

When the instance is released for garbage collection (GC)

Static Variables of the Same Name

You can declare static variables with the same name in more than one procedure. If you do this, the Visual Basic compiler considers each such variable to be a separate element. The initialization of one of these variables does not affect the values of the others. The same applies if you define a procedure with a set of overloads and declare a static variable with the same name in each overload.

Containing Elements for Static Variables

You can declare a static local variable within a class, that is, inside a procedure in that class. However, you cannot declare a static local variable within a structure, either as a structure member or as a local variable of a procedure within that structure.

Example

Description

The following example declares a variable with the Static (Visual Basic) keyword. (Note that you do not need the Dim keyword when the Instrução Dim (Visual Basic) uses a modifier such as Static.)

Code

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

Comments

In the preceding example, the variable applesSold continues to exist after the procedure runningTotal returns to the calling code. The next time runningTotal is called, applesSold retains its previously calculated value.

If applesSold had been declared without using Static, the previous accumulated values would not be preserved across calls to runningTotal. The next time runningTotal was called, applesSold would have been recreated and initialized to 0, and runningTotal would have simply returned the same value with which it was called.

Compiling the Code

You can initialize the value of a static local variable as part of its declaration. If you declare an array to be Static, you can initialize its rank (number of dimensions), the length of each dimension, and the values of the individual elements.

Security

In the preceding example, you can produce the same lifetime by declaring applesSold at module level. If you changed the scope of a variable this way, however, the procedure would no longer have exclusive access to it. Because other procedures could access applesSold and change its value, the running total could be unreliable and the code could be more difficult to maintain.

Consulte também

Tarefas

Solucionando problemas de tipos de dados (Visual Basic)

Referência

Compartilhamento (Visual Basic)

Nada (Visual Basic)

Static (Visual Basic)

Conceitos

Nomes de elementos declarados (Visual Basic)

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

Outros recursos

Referências a elementos declarados (Visual Basic)