Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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
ForeNextde 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
Diminstrução para a variável dentro do procedimento, mas fora de qualquer bloco (como umWith...End Withbloco).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
Coloque a instrução
Dimpara a variável dentro do módulo, da classe ou da estrutura, fora de qualquer procedimento.Inclua a palavra-chave Privada na
Diminstrução.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
Coloque a instrução
Dimpara a variável dentro do módulo, da classe ou da estrutura, fora de qualquer procedimento.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.