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 o escopo dela.
Para saber mais, 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
eNext
de um loopFor
.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 instrução
Dim
para a variável dentro do procedimento, mas fora de qualquer bloco (como um blocoWith
...End With
).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 nível de módulo de termo único 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 o escopo dela. 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
Coloque a instrução
Dim
para a variável dentro do módulo, classe ou estrutura, mas fora de qualquer procedimento.Inclua a palavra-chave Privado na instrução
Dim
.Você pode consultar a variável de qualquer lugar dentro do módulo, classe ou estrutura, mas não de fora dele.
Para tornar uma variável visível em um namespace
Coloque a instrução
Dim
para a variável dentro do módulo, classe ou estrutura, mas fora de qualquer procedimento.Você pode consultar a variável de qualquer lugar dentro do namespace contendo 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 a visibilidade dela 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 à variável String
strMsg
. Quando o procedimento usePrivateVariable
é chamado, ele exibe o conteúdo da variável de cadeia de caracteres strMsg
em uma caixa de diálogo.
Com a alteração a seguir para o exemplo anterior, a variável de cadeia de caracteres strMsg
pode ser referenciada por código em qualquer lugar no namespace da declaração dela.
Public strMsg As String
Programação robusta
Quanto mais estreito for o escopo de uma variável, menos oportunidades você terá para 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 restrito for o escopo de uma variável, menores são as chances de que o código mal-intencionado possa fazer uso inadequado dela.