Como: Ocultar uma variável com o mesmo nome que sua variável (Visual Basic)
Você pode ocultar uma variável por sombreamento -lo, ou seja, redefinindo o com uma variável de mesmo nome. Você pode sombrear um variável que você deseja ocultar de duas maneiras:
Sombrear por meio de escopo. Você pode sombreá-lo por meio do escopo por redeclaring-lo dentro de uma sub-região da região que contém a variável que você deseja ocultar.
Sombrear através de herança. Se a variável que você deseja ocultar é definida no nível de classe , você pode sombreá-lo através de herança por redeclaring-lo com o Shadows (Visual Basic)apalavra-chave em uma classede derivada.
Duas maneiras para ocultar uma variável.
Para ocultar uma variável pelo efeito de sombra por meio de escopo
Determinar a região definindo a variável que você deseja ocultare determinar uma sub-região na qual deseja redefini-la com sua variável.
Região da variável
Sub-região permitido para redefinindo a ele
Module
Uma classe dentro do módulo
Class
Uma subclasse da classe
Um procedimento dentro da classe
Não é possível redefinir umavariável do procedimentoem um bloco dentro desse procedimento, por exemplo em um If...End If construção ou um Forloop.
Se ainda não existir, crie a sub-região.
Dentro da sub-região, escrever um Instrução Dim (Visual Basic) declarando a variávelde sombreamento.
Quando o código dentro a sub-região se refere o nome da variável , o compilador resolve a referência à variávelde sombreamento.
O exemplo a seguir ilustra o sombreamento através de escopo, bem como uma referência que ignora o sombreamento.
Module shadowByScope ' The following statement declares num as a module-level variable. Public num As Integer Sub show() ' The following statement declares num as a local variable. Dim num As Integer ' The following statement sets the value of the local variable. num = 2 ' The following statement displays the module-level variable. MsgBox(CStr(shadowByScope.num)) End Sub Sub useModuleLevelNum() ' The following statement sets the value of the module-level variable. num = 1 show() End Sub End Module
O exemplo anterior declara a variável num ao módulo nível e procedimento nível (no procedimento show). A variávelde localnum o módulode sombras- variávelde nível num em show, portanto, a variável de local é definido como 2. No entanto, não há nenhuma variável de local para a sombra num na useModuleLevelNum procedimento. Portanto, useModuleLevelNum define o valor do módulo-nível variável 1.
O MsgBox chamar dentro de show ignora o mecanismo de sombreamento qualificando num com o nome do módulo . Portanto, ele exibe o módulo-nível variável em vez da variávelde local.
Para ocultar uma variável pelo efeito de sombra por meio de herança
Certifique-se de que a variável que você deseja ocultar é declarado em uma classee no nível de classe (fora de qualquer procedimento). Caso contrário, ele não pode sombrear através de herança.
Defina uma classe derivada da variávelde classe , se ainda não existir.
Dentro da classederivada, escrever um Dimdeclarando a variáveldedemonstrativo . Include the Shadows (Visual Basic) keyword in the declaration.
When code in the derived class refers to the variable name, the compiler resolves the reference to your variable.
O exemplo a seguir ilustra o sombreamento através de herança. Ele faz duas referências, que acessa a variável de sombreamento e uma que ignora o sombreamento.
Public Class shadowBaseClass Public shadowString As String = "This is the base class string." End Class Public Class shadowDerivedClass Inherits shadowBaseClass Public Shadows shadowString As String = "This is the derived class string." Public Sub showStrings() Dim s As String = "Unqualified shadowString: " & shadowString & vbCrLf & "MyBase.shadowString: " & MyBase.shadowString MsgBox(s) End Sub End Class
The preceding example declares the variable shadowString in the base class and shadows it in the derived class. The procedure showStrings in the derived class displays the shadowing version of the string when the name shadowString is not qualified. Em seguida, exibe a versão de sombreado ao shadowString é qualificado com o MyBasepalavra-chave.
Programação robusta
Shadowing introduces more than one version of a variable with the same name. When a code statement refers to the variable name, the version to which the compiler resolves the reference depends on factors such as the location of the code statement and the presence of a qualifying string. This can increase the risk of referring to an unintended version of a shadowed variable. You can lower that risk by fully qualifying all references to a shadowed variable.
Consulte também
Tarefas
Como: Ocultar uma variável herdada (Visual Basic)
Como: Acessar uma variável ocultada por uma classe derivada (Visual Basic)
Referência
Conceitos
Diferenças entre sombreamento e sobreposição (Visual Basic)
Me, My, MyBase e MyClass no Visual Basic
Noções básicas de herança (Visual Basic)