Gewusst wie: Ausblenden einer geerbten Variablen (Visual Basic)

Eine abgeleitete Klasse erbt alle Definitionen ihrer Basisklasse.Falls Sie eine Variable unter Verwendung des Namens eines Basisklassenelements definieren möchten, können Sie das betreffende Basisklassenelement ausblenden bzw. für das Element Shadowing durchführen, wenn Sie die Variable in der abgeleiteten Klasse definieren.In diesem Fall wird in der abgeleiteten Klasse auf die Variable zugegriffen, sofern der Shadowing-Mechanismus nicht explizit umgangen wird.

Es kann auch sinnvoll sein, eine geerbte Variable auszublenden, um eine Überarbeitung der Basisklasse zu verhindern.Die Basisklasse könnte in einer Weise verändert werden, die sich auf das Element auswirkt, das geerbt wird.In diesem Fall wird mit dem Shadows-Modifizierer erzwungen, dass Verweise in die abgeleitete Klasse der Variablen aufgelöst werden und nicht in das Basisklassenelement.

So blenden Sie eine geerbte Variable aus

  1. Stellen Sie sicher, dass die Variable, die Sie ausblenden möchten, auf Klassenebene (nicht innerhalb einer Prozedur) deklariert wird.Andernfalls muss sie nicht ausgeblendet werden.

  2. Verfassen Sie innerhalb der abgeleiteten Klasse eine Dim-Anweisung (Visual Basic), die Ihre Variable deklariert.Verwenden Sie den Namen der geerbten Variablen.

  3. Fügen Sie das Shadows (Visual Basic)-Schlüsselwort in die Deklaration ein.

    Wenn Code in der abgeleiteten Klasse auf den Variablennamen verweist, löst der Compiler den Verweis in die Variable auf.

    Im folgenden Beispiel wird das Shadowing einer geerbten Variable veranschaulicht.

    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.Anschließend wird die Shadowingversion angezeigt, wenn shadowString mit dem MyBase-Schlüsselwort qualifiziert wird.

Robuste Programmierung

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.Dadurch kann sich das Risiko erhöhen, auf eine unerwünschte Version einer Variablen zu verweisen, für die ein Shadowing durchgeführt wurde.Sie können dieses Risiko verringern, indem Sie alle Verweise auf eine solche Variable vollständig qualifizieren.

Siehe auch

Aufgaben

Gewusst wie: Ausblenden einer Variablen mit dem gleichen Namen wie die aktuelle Variable (Visual Basic)

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

Referenz

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)