Partilhar via


Como: Acessar uma variável oculta por uma classe derivada (Visual Basic)

Quando o código em uma classe derivada acessa uma variável, o compilador normalmente resolve a referência para a versão acessível mais próxima, ou seja, a versão acessível o menor número de etapas derivacionais para trás da classe de acesso. Se a variável é definida na classe derivada, o código normalmente acessa essa definição.

Se a variável de classe derivada sombrear uma variável na classe base, ela ocultará a versão da classe base. No entanto, você pode acessar a variável de classe base qualificando-a com a MyBase palavra-chave.

Para acessar uma variável de classe base ocultada por uma classe derivada

  • Em uma instrução de expressão ou atribuição, preceda o nome da variável com a MyBase palavra-chave e um ponto (.).

    O compilador resolve a referência à versão de classe base da variável.

    O exemplo a seguir ilustra o sombreamento através da herança. Ele faz duas referências, uma que acessa a variável de sombreamento e outra 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
    

    O exemplo anterior declara a variável shadowString na classe base e a sombreia na classe derivada. O procedimento showStrings na classe derivada exibe a versão de sombreamento da cadeia de caracteres quando o nome shadowString não é qualificado. Em seguida, exibe a versão sombreada quando shadowString é qualificada com a MyBase palavra-chave.

Programação robusta

Para reduzir o risco de referência a uma versão não intencional de uma variável sombreada, você pode qualificar totalmente todas as referências a uma variável sombreada. O sombreamento introduz mais de uma versão de uma variável com o mesmo nome. Quando uma instrução de código se refere ao nome da variável, a versão para a qual o compilador resolve a referência depende de fatores como o local da instrução de código e a presença de uma cadeia de caracteres de qualificação. Isso pode aumentar o risco de se referir à versão errada da variável.

Consulte também