Compartilhar via


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

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

  2. Se ainda não existir, crie a sub-região.

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

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

  2. Defina uma classe derivada da variávelde classe , se ainda não existir.

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

Overrides (Visual Basic)

Conceitos

Sombreamento em Visual Basic

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)

Outros recursos

Referências a elementos declarados (Visual Basic)