Gewusst wie: Ausblenden einer geerbten Variablen (Visual Basic)
Eine abgeleitete Klasse erbt alle Definitionen ihrer Basisklasse. Wenn Sie eine Variable mit demselben Namen wie ein Element der Basisklasse definieren möchten, können Sie dieses Basisklassenelement verbergen oder ein Shadowing durchführen, wenn Sie Ihre Variable in der abgeleiteten Klasse definieren. Der Code in der abgeleiteten Klasse greift dann auf Ihre Variable zu, es sei denn, er umgeht explizit den Shadowingmechanismus.
Ein weiterer Grund, warum Sie eine geerbte Variable möglicherweise verbergen sollten, ist der Schutz vor der Revision der Basisklasse. Die Basisklasse wird möglicherweise so geändert, dass das geerbte Element geändert wird. In diesem Fall erzwingt der Modifizierer Shadows
, dass Verweise von der abgeleiteten Klasse in Ihre Variable und nicht in das Basisklassenelement aufgelöst werden.
So verbergen Sie eine geerbte Variable
Stellen Sie sicher, dass die Variable, die Sie verbergen möchten, auf Klassenebene (außerhalb von Prozeduren) deklariert ist. Andernfalls müssen Sie sie nicht verbergen.
Schreiben Sie in der abgeleiteten Klasse eine Dim-Anweisung, die Ihre Variable deklariert. Verwenden Sie denselben Namen wie die geerbte Variable.
Schließen Sie das Schlüsselwort Shadows in die Deklaration ein.
Wenn Code in der abgeleiteten Klasse auf den Variablennamen verweist, löst der Compiler den Verweis in Ihre Variable auf.
Das folgende Beispiel veranschaulicht das Shadowing einer geerbten Variablen:
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 ein Shadowing für sie durchgeführt. Die ProzedurShowStrings
in der abgeleiteten Klasse zeigt die das Shadowing durchführende Version der Zeichenfolge an, wenn der NameshadowString
nicht qualifiziert ist. Anschließend wird die dem Shadowing unterzogene Version angezeigt, wennshadowString
mit dem SchlüsselwortMyBase
qualifiziert wird.
Stabile Programmierung
Shadowing führt mehr als eine Version einer Variablen mit demselben Namen ein. Wenn eine Codeanweisung auf den Variablennamen verweist, hängt die Version, zu der der Compiler den Verweis auflöst, von Faktoren wie dem Speicherort der Codeanweisung und dem Vorhandensein einer qualifizierenden Zeichenfolge ab. Dies kann das Risiko erhöhen, auf eine unbeabsichtigte Version einer einem Shadowing unterzogenen Variablen zu verweisen. Sie können dieses Risiko verringern, indem Sie alle Verweise auf eine dem Shadowing unterzogene Variable vollständig qualifizieren.
Siehe auch
- References to Declared Elements
- Shadowing in Visual Basic
- Unterschiede zwischen Shadowing und Überschreiben
- Vorgehensweise: Ausblenden einer Variablen mit dem gleichen Namen wie die aktuelle Variable
- Vorgehensweise: Zugreifen auf eine Variable, die von einer abgeleiteten Klasse ausgeblendet wird
- Überschreibt
- Me, My, MyBase und MyClass
- Grundlagen der Vererbung