Freigeben über


Gewusst wie: Zugreifen auf eine Variable, die von einer abgeleiteten Klasse ausgeblendet wird

Aktualisiert: November 2007

Wenn der Code in einer abgeleiteten Klasse auf eine Variable zugreift, löst der Compiler den Verweis in der Regel in die nächste Version auf, auf die zugegriffen werden kann, das heißt in die verwendbare Version, die die wenigsten Ableitungsschritte zurück von der zugreifenden Klasse liegt. Wenn die Variable in der abgeleiteten Klasse definiert ist, greift der Code normalerweise auf diese Definition zu.

Wenn die Variable einer abgeleiteten Klasse ein Shadowing einer Variablen in der Basisklasse durchführt, wird die Version der Basisklasse ausgeblendet. Sie können jedoch auf die Basisklassenvariable zugreifen, indem Sie sie mit dem MyBase-Schlüsselwort qualifizieren.

So greifen Sie auf eine von einer abgeleiteten Klasse ausgeblendete Basisklassenvariable zu

  • Stellen Sie in einem Ausdruck oder einer Zuweisungsanweisung das MyBase-Schlüsselwort und einen Punkt (.) vor den Variablennamen.

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

    Im folgenden Beispiel wird Shadowing durch Vererbung illustriert. Es gibt zwei Verweise: einen, der auf die Shadowingvariable zugreift, und einen, der das Shadowing 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 vorhergehenden Beispiel wird die shadowString-Variable in der Basisklasse deklariert und ein Shadowing der Variablen in der abgeleiteten Klasse durchgeführt. Die showStrings-Prozedur in der abgeleiteten Klasse zeigt die Shadowingversion der Zeichenfolge an, wenn der shadowString-Name nicht qualifiziert ist. Sie zeigt dann die Variable an, für die ein Shadowing durchgeführt wurde, wenn shadowString mit dem MyBase-Schlüsselwort qualifiziert wird.

Robuste Programmierung

Damit möglichst nicht auf eine unerwünschte Version einer Variablen verwiesen wird, für die ein Shadowing durchgeführt wurde, können Sie alle Verweise auf eine solche Variable vollständig qualifizieren. Shadowing führt mehr als eine Version einer Variablen mit dem gleichen Namen ein. Wenn eine Codeanweisung auf einen Variablennamen verweist, richtet sich die Version, in die der Compiler den Verweis auflöst, nach Faktoren wie der Position der Codeanweisung und dem Vorhandensein einer qualifizierenden Zeichenfolge. Dies kann das Risiko erhöhen, auf die falsche Version der Variablen zu verweisen.

Siehe auch

Aufgaben

Gewusst wie: Unterscheiden zwischen zwei Elementen mit dem gleichen Namen

Gewusst wie: Ausblenden einer Variablen mit dem gleichen Namen wie die aktuelle Variable

Gewusst wie: Ausblenden einer geerbten Variablen

Konzepte

Auflösen eines Verweises bei mehreren Variablen mit gleichem Namen

Shadowing in Visual Basic

Unterschiede zwischen Shadowing und Überschreiben

Referenz

Shadows

Overrides

Weitere Ressourcen

Verweise auf deklarierte Elemente