Partilhar via


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

  1. 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.

  2. Crie o sub-região se ela ainda não existir.

  3. 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

  1. 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.

  2. Defina uma classe derivada da classe da variável se já não existir.

  3. 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

Sombreamento em Visual Basic

Diferenças entre Sombreamento e Sobrescrição

Referência

Substitui

MyBase

Outros recursos

Referências aos elementos declaradas