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 geerbten Variablen (Visual Basic)
Referenz
Konzepte
Verweise auf deklarierte Elemente (Visual Basic)
Unterschiede zwischen Shadowing und Überschreiben (Visual Basic)