Compartilhar 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 à versão acessível mais próxima. Ou seja, a versão acessível com menos etapas derivacionais para trás da classe de acesso. Se a variável for definida na classe derivada, o código normalmente acessará 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 palavra-chave MyBase.

Como acessar uma variável de classe base oculta por uma classe derivada

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

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

    O exemplo a seguir ilustra o sombreamento por meio 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, ele exibe a versão sombreada quando shadowString é qualificada com a palavra-chave MyBase.

Programação robusta

Para reduzir o risco de fazer 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 apresenta 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 à qual o compilador resolve a referência depende de fatores como o local da instrução do código e a presença de uma cadeia de caracteres qualificada. Isso pode aumentar o risco de fazer referência à versão errada da variável.

Confira também