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 eNext
de umFor
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 umWith
bloco ...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
Coloque a
Dim
instrução para a variável dentro do módulo, classe ou estrutura, mas fora de qualquer procedimento.Inclua a palavra-chave Private na
Dim
instrução.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
Coloque a
Dim
instrução para a variável dentro do módulo, classe ou estrutura, mas fora de qualquer procedimento.Inclua a palavra-chave Amigo ou Público na
Dim
declaração.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.