Compartilhar 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.

Escopo no Nível de Bloco ou Procedimento

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

  • Coloque a Instrução Dim para a variável entre as instruções de declaração de início e término desse bloco, por exemplo, entre as instruções For e Next de um loop For.

    Você pode consultar a variável somente de dentro do bloco.

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

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

    Você pode consultar a variável somente de dentro do procedimento, incluindo dentro de qualquer bloco contido no procedimento.

Escopo no Nível do Módulo ou do Namespace

Para conveniência, o termo único nível de módulo se aplica 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 um módulo, classe ou estrutura

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

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

  3. Você pode consultar a 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 um namespace

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

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

  3. Você pode consultar a 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 se referir à String variável strMsg. Quando o usePrivateVariable procedimento é chamado, ele exibe o conteúdo da variável strMsg de cadeia de caracteres em uma caixa de diálogo.

Com a seguinte alteração no exemplo anterior, a variável strMsg de cadeia de caracteres pode ser referenciada 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á para fazer referência acidental a ela no lugar de outra variável com o mesmo nome. Você também pode minimizar problemas de correspondência entre referências.

Segurança do .NET Framework

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

Consulte também