Freigeben über


Vorgehensweise: Ausblenden einer geerbten Variablen (Visual Basic)

Eine abgeleitete Klasse erbt alle Definitionen der Basisklasse. Wenn Sie eine Variable mit demselben Namen wie ein Element der Basisklasse definieren möchten, können Sie dieses Basisklassenelement ausblenden oder schatten, wenn Sie die Variable in der abgeleiteten Klasse definieren. Wenn Sie dies tun, greift Code in der abgeleiteten Klasse auf Ihre Variable zu, es sei denn, er umgeht explizit den Schattenmechanismus.

Ein weiterer Grund, warum Sie eine geerbte Variable ausblenden möchten, ist der Schutz vor der Revision der Basisklasse. Die Basisklasse kann sich einer Änderung unterziehen, die das von Ihnen geerbte Element ändert. In diesem Fall erzwingt der Shadows Modifizierer, dass Verweise von der abgeleiteten Klasse zu Ihrer Variablen aufgelöst werden, statt zum Basisklassenelement.

So verbergen Sie eine geerbte Variable

  1. Stellen Sie sicher, dass die Variable, die Sie ausblenden möchten, auf Klassenebene deklariert ist (außerhalb einer Prozedur). Andernfalls brauchen Sie es nicht zu verbergen.

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

  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 auf die Variable auf.

    Das folgende Beispiel veranschaulicht das Schattieren 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 schattiert. Die Prozedur ShowStrings in der abgeleiteten Klasse zeigt die Schattenversion der Zeichenfolge an, wenn der Name shadowString nicht qualifiziert ist. Anschließend wird die schattierte Version angezeigt, wenn shadowString mit dem MyBase Schlüsselwort qualifiziert wird.

Stabile Programmierung

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 eine unbeabsichtigte Version einer abgeschatteten Variablen zu verweisen. Sie können dieses Risiko verringern, indem Sie alle Verweise auf eine schattierte Variable vollständig qualifizieren.

Siehe auch