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-lo com uma variável de mesmo nome.Você pode sombrear a 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 por meio de herança por redeclaring-lo com o Sombras (Visual Basic) palavra-chave em uma classe 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 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-lo

    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. Se ele ainda não existir, crie a sub-região.

  3. Dentro da sub-região, escrever um Instrução (Visual Basic) Dim declarando a variável de sombreamento.

    Quando o código dentro a sub-região refere-se ao nome da variável, o compilador resolve a referência à variável de sombreamento.

    O exemplo a seguir ilustra o sombreamento através de escopo, bem como 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 no nível de módulo e no nível de procedimento (no procedimento show).A variável local num sombreia a variável de nível de módulo num em show, portanto, a variável local é definida como 2.No entanto, não há nenhuma variável de local a sombra num na useModuleLevelNum procedimento.Portanto, useModuleLevelNum define o valor da variável nível de módulo como 1.

    O MsgBox chamar dentro de show passará pelo mecanismo de sombreamento qualificando num com o nome do módulo.Portanto, ele exibe a variável de nível de módulo em vez da variável 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 é declarada em uma classe e 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 classe da variável, se ainda não existir.

  3. Dentro da classe derivada, escrever um Dim declarando sua variável de instrução.Inclua a palavra-chave Sombras (Visual Basic) 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 sombreamento através de herança.Ele faz duas referências, aquele que acessa a variável de sombreamento e uma 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.Ele exibe a versão sombreada quando shadowString é qualificado com o MyBasepalavra-chave.

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: ocultar uma variável herdada (Visual Basic)

Como: acessar uma variável ocultada por uma classe derivada (Visual Basic)

Referência

Substitui (Visual Basic)

Conceitos

Referências aos elementos declarados (Visual Basic)

Sombreamento em Visual Basic

Diferenças entre o sombreamento e substituindo (Visual Basic)

Me, My, MyBase, and MyClass in Visual Basic

Noções básicas de herança (Visual Basic)