Como: Ocultar uma variável com o mesmo nome sistema autônomo a variável
Você pode ocultar uma variável, sombreamento-lo, ou seja, redefinindo-lo com uma variável de mesmo nome.Você pode sombra variável que você deseja ocultar de duas maneiras:
Sombrear através de escopo. Você pode sombra-lo por meio de escopo pelo 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 deseja ocultar é definida no nível de classe, pode sombreá-lo por meio de herança por redeclaring-lo com o Sombras palavra-chave em uma classe derivada.
Duas maneiras de se ocultar uma variável
Para ocultar uma variável, efeito de sombra por meio de escopo
Determinar a região definindo a variável que você deseja ocultar e 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-
Module
Uma classe dentro do módulo
Classe
Uma subclasse da classe
Um procedimento dentro da classe
Não é possível redefinir uma variável de procedimento em um bloco dentro desse procedimento, por exemplo, em um If... End If construção ou um For loop.
Crie o sub-região se ela ainda não existir.
Dentro de sub-região, gravar um Instrução Dim (Visual Basic) declarando a variável de sombreamento.
Quando o código dentro da sub-região se refere o nome da variável, o compilador resolve a referência à variável sombreamento.
O exemplo a seguir ilustra o efeito de sombra por meio de escopo, bem sistema autônomo uma referência que ignora o efeito de sombra.
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 ambos no nível de módulo e no nível de procedimento (no procedimento show). A variável localnum sombras de variável de nível de módulo num dentro de show, para que a variável local é definida como 2. No entanto, não há nenhuma variável local para sombra num no useModuleLevelNum procedimento. Portanto, useModuleLevelNum Define o valor da variável de nível de módulo como 1.
The MsgBox chamar dentro show ignora o mecanismo de sombreamento por qualificação num com o nome do módulo. Portanto, ele exibe a variável em nível de módulo, em vez da variável local.
Para ocultar uma variável, efeito de sombra por meio de herança
Certifique-se de que a variável que você deseja ocultar é declarada em uma classe e no nível de classe (fora de qualquer procedimento).Caso contrário, ele não pode ser sombra por meio de herança.
Defina uma classe derivada da classe da variável se já não existir.
Na classe derivada, escrever um Dim declarar a variável de demonstrativo. Inclua a palavra-chave Sombras na declaração.
Quando código na classe derivada refere-se ao nome da variável, o compilador resolve a referência a sua variável.
O exemplo a seguir ilustra o efeito de sombra por meio de herança.Ele faz duas referências, uma que acessa a variável de sombreamento e outra que ignora o efeito de sombra.
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
O exemplo precedente declara a variável shadowString na classe base e a sombreia na classe derivada.O procedimento showStrings na classe derivada exibe a versão sombreada da cadeia de caracteres quando o nome shadowString não está habilitado.Isso então exibe a versão sombreada quando shadowString esa habilitado com a palavra-chave MyBase.
Programação robusta
Sombreamento introduz mais de uma versão de uma variável com o mesmo nome.Quando uma declaração de código refere-se ao nome da variável, a versão a qual o compilador resolve a referência depende de fatores tais como a localização da declaração de código e a presença de cadeia de caracteres de habilitação.Isto pode aumentar o risco de referir-se a uma versão não planejada de uma variável sombreada.Você pode reduzir aquele risco habilitando todas as referências a uma variável sombreada.
Consulte também
Tarefas
Como: Distinguir entre dois elementos com o mesmo nome
Como: Ocultar uma variável herdada
Como: Acessar uma variável oculto por uma classe derivada
Conceitos
Resolvendo uma Referência Quando Várias Variáveis Têm o Mesmo Nome
Diferenças entre Sombreamento e Sobrescrição