Freigeben über


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

  1. 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.

  2. Schreiben Sie in der abgeleiteten Klasse eine Dim-Anweisung, die Ihre Variable deklariert. Verwenden Sie denselben Namen wie die geerbte Variable.

  3. 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 Prozedur ShowStrings in der abgeleiteten Klasse zeigt die das Shadowing durchführende Version der Zeichenfolge an, wenn der Name shadowString nicht qualifiziert ist. Anschließend wird die dem Shadowing unterzogene Version angezeigt, wenn shadowString mit dem Schlüsselwort MyBase 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