Partilhar via


Como controlar o escopo de uma variável (Visual Basic)

Normalmente, uma variável está no escopo, ou visível para referência, em toda a região em que você a declara. Em alguns casos, o nível de acesso da variável pode influenciar seu escopo.

Para obter mais informações, consulte Escopo no Visual Basic.

Âmbito de aplicação ao nível do bloco ou do procedimento

Para tornar uma variável visível apenas dentro de um bloco

  • Coloque a instrução Dim para a variável entre as instruções de declaração inicial e final desse bloco, por exemplo, entre as For instruções e Next de um For loop.

    Você pode se referir à variável somente de dentro do bloco .

Para tornar uma variável visível apenas dentro de um procedimento

  • Coloque a Dim instrução para a variável dentro do procedimento, mas fora de qualquer bloco (como um Withbloco ...End With ).

    Você pode se referir à variável somente de dentro do procedimento, inclusive dentro de qualquer bloco contido no procedimento.

Escopo no nível do módulo ou namespace

Por conveniência, o nível de módulo de termo único aplica-se igualmente a módulos, classes e estruturas. O nível de acesso de uma variável de nível de módulo determina seu escopo. O namespace que contém o módulo, a classe ou a estrutura também influencia o escopo.

Para tornar uma variável visível em todo um módulo, classe ou estrutura

  1. Coloque a Dim instrução para a variável dentro do módulo, classe ou estrutura, mas fora de qualquer procedimento.

  2. Inclua a palavra-chave Private na Dim instrução.

  3. Você pode se referir à variável de qualquer lugar dentro do módulo, classe ou estrutura, mas não de fora dela.

Para tornar uma variável visível em todo um namespace

  1. Coloque a Dim instrução para a variável dentro do módulo, classe ou estrutura, mas fora de qualquer procedimento.

  2. Inclua a palavra-chave Amigo ou Público na Dim declaração.

  3. Você pode fazer referência à variável de qualquer lugar dentro do namespace que contém o módulo, a classe ou a estrutura.

Exemplo

O exemplo a seguir declara uma variável no nível do módulo e limita sua visibilidade ao código dentro do módulo.

Module demonstrateScope  
    Private strMsg As String  
    Sub initializePrivateVariable()  
        strMsg = "This variable cannot be used outside this module."  
    End Sub  
    Sub usePrivateVariable()  
        MsgBox(strMsg)  
    End Sub  
End Module  

No exemplo anterior, todos os procedimentos definidos no módulo demonstrateScope podem referir-se à String variável strMsg. Quando o usePrivateVariable procedimento é chamado, ele exibe o conteúdo da variável strMsg string em uma caixa de diálogo.

Com a seguinte alteração para o exemplo anterior, a variável strMsg string pode ser referida por código em qualquer lugar no namespace de sua declaração.

Public strMsg As String  

Programação robusta

Quanto mais estreito for o escopo de uma variável, menos oportunidades você terá de se referir acidentalmente a ela no lugar de outra variável com o mesmo nome. Você também pode minimizar problemas de correspondência de referência.

Segurança do .NET Framework

Quanto mais estreito for o escopo de uma variável, menores serão as chances de que um código mal-intencionado possa fazer uso indevido dela.

Consulte também