Freigeben über


Vorgehensweise: Zugreifen auf eine Variable, die von einer abgeleiteten Klasse ausgeblendet wird (Visual Basic)

Wenn Code in einer abgeleiteten Klasse auf eine Variable zugreift, löst der Compiler normalerweise den Verweis auf die nächstgelegene zugängliche Version auf, d. h. die barrierefreie Version die wenigsten Ableitungsschritte rückwärts von der Zugriffsklasse. Wenn die Variable in der abgeleiteten Klasse definiert ist, greift der Code normalerweise auf diese Definition zu.

Wenn die abgeleitete Klassenvariable eine Variable in der Basisklasse schattiert, blendet sie die Basisklassenversion aus. Sie können jedoch auf die Basisklassenvariable zugreifen, indem Sie sie mit dem MyBase Schlüsselwort qualifizieren.

Um auf eine von einer abgeleiteten Klasse versteckte Basisklassenvariable zuzugreifen

  • Stellen Sie in einer Ausdrucks- oder Zuweisungsanweisung dem Variablennamen das MyBase-Schlüsselwort und einen Punkt (.) voran.

    Der Compiler löst den Verweis auf die Basisklassenversion der Variablen auf.

    Das folgende Beispiel veranschaulicht das Shadowing durch Vererbung. Es erstellt zwei Verweise, eine, die auf die Schattenvariable zugreift und eine, die die Schattenung umgeht.

    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
    

    Im vorherigen Beispiel wird die Variable shadowString in der Basisklasse deklariert und in der abgeleiteten Klasse schattiert. Die Prozedur showStrings in der abgeleiteten Klasse zeigt die Schattenversion der Zeichenfolge an, wenn der Name shadowString nicht qualifiziert ist. Anschließend wird die schattierte Version angezeigt, wenn shadowString mit dem MyBase Schlüsselwort qualifiziert wird.

Robuste Programmierung

Um das Risiko zu verringern, auf eine unbeabsichtigte Version einer abgeschatteten Variablen zu verweisen, können Sie alle Verweise auf eine abgeschattete Variable vollständig qualifizieren. Bei der Schattenerstellung werden mehrere Versionen einer Variablen mit demselben Namen eingeführt. Wenn sich eine Code-Anweisung auf den Variablennamen bezieht, hängt die Version, auf die der Compiler den Verweis auflöst, von Faktoren wie dem Ort der Code-Anweisung und dem Vorhandensein einer qualifizierenden Zeichenfolge ab. Dies kann das Risiko erhöhen, auf die falsche Version der Variablen zu verweisen.

Siehe auch