Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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 ProzedurshowStrings
in der abgeleiteten Klasse zeigt die Schattenversion der Zeichenfolge an, wenn der NameshadowString
nicht qualifiziert ist. Anschließend wird die schattierte Version angezeigt, wennshadowString
mit demMyBase
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
- Verweise auf deklarierte Elemente
- Schatten in Visual Basic
- Unterschiede zwischen Überschattung und Überschreiben
- Vorgehensweise: Ausblenden einer Variable mit demselben Namen wie Ihre Variable
- Vorgehensweise: Ausblenden einer geerbten Variablen
- Schatten
- Außerkraftsetzungen
- Me, My, MyBase und MyClass
- Vererbungsgrundlagen