Eigenschaftenaccessoren können in einer NotOverridable-Eigenschaft nicht als '<Zugriffsmodifizierer>' deklariert werden

Aktualisiert: November 2007

Property accessors cannot be declared '<accessmodifier>' in a 'NotOverridable' property

Eine Get-Anweisung oder Set-Anweisung (Visual Basic) in einer NotOverridable-Eigenschaft enthält das Private-Schlüsselwort.

Anhand der folgenden Beweisführung wird erläutert, warum NotOverridable und Private nicht in einer Property-Anweisung kombiniert werden können:

  1. Eine Eigenschaft oder Prozedur, die eine Basisklasseneigenschaft bzw. -prozedur nicht überschreibt, weist die Standardeinstellung NotOverridable auf.

  2. Eine Eigenschaft oder Prozedur in einer abgeleiteten Klasse, die eine Basisklasseneigenschaft bzw. -prozedur überschreibt, weist jedoch die Standardeinstellung Overridable auf. Um die Hierarchie des Überschreibens aufzuheben, können Sie NotOverridable deklarieren. Dies ist der einzige Kontext, in dem Sie NotOverridable verwenden können. Sie können NotOverridable also nur in Verbindung mit Overrides verwenden.

  3. Wenn die Eigenschaft oder Prozedur einer Basisklasse als Private (Visual Basic) deklariert ist, kann diese Eigenschaft oder Prozedur nicht von einer abgeleiteten Klasse überschrieben werden, da sie nicht darauf zugreifen kann. Daher können Sie Private nicht in Verbindung mit Overridable verwenden.

  4. Um eine Eigenschaft oder Prozedur zu überschreiben, muss die überschreibende Eigenschaft bzw. Prozedur nicht nur über die gleiche Signatur, sondern auch über die gleiche Zugriffsebene verfügen. Das bedeutet, dass eine überschreibende Eigenschaft oder Prozedur nicht Private angeben kann, weil eine überschreibbare Eigenschaft oder Prozedur ebenfalls nicht Private angeben kann.

  5. Da Sie NotOverridable nur für eine überschreibende Eigenschaft oder Prozedur angeben können, können Sie dieses Schlüsselwort nicht mit Private kombinieren.

Aufgrund derselben Logik können die einzelnen Eigenschaftaftenprozeduren (Get und Set) einer überschreibenden Eigenschaft nicht Private sein.

Fehler-ID: BC31106

So beheben Sie diesen Fehler

  • Entfernen Sie das Private-Schlüsselwort aus der Get-Anweisung oder der Set-Anweisung, oder entfernen Sie das Overrides-Schlüsselwort und das NotOverridable-Schlüsselwort aus der Property-Anweisung.

Siehe auch

Aufgaben

Gewusst wie: Deklarieren einer Eigenschaft mit gemischten Zugriffsebenen

Konzepte

Property-Prozeduren

Unterschiede zwischen Shadowing und Überschreiben