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

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 das Shadowing durch Vererbung veranschaulicht.Es enthält zwei Verweise, einen für den Zugriff auf die Shadowingvariable und einen zur Umgehung des Shadowing.

    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 Variable shadowString in der Basisklasse deklariert und in der abgeleiteten Klasse mittels Shadowing ausgeblendet.Die in der abgeleiteten Klasse enthaltene Prozedur showStrings zeigt die Shadowingversion der Zeichenfolge an, wenn der Name shadowString nicht qualifiziert wird.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: Ausblenden einer Variablen mit dem gleichen Namen wie die aktuelle Variable (Visual Basic)

Gewusst wie: Ausblenden einer geerbten Variablen (Visual Basic)

Referenz

Shadows (Visual Basic)

Overrides (Visual Basic)

Konzepte

Verweise auf deklarierte Elemente (Visual Basic)

Shadowing in Visual Basic

Unterschiede zwischen Shadowing und Überschreiben (Visual Basic)

Me, "My", "MyBase" und "MyClass" in Visual Basic

Grundlagen der Vererbung (Visual Basic)