Le funzioni di accesso alle proprietà non possono essere dichiarate '<modificatoreaccesso>' in una proprietà 'NotOverridable'

Aggiornamento: novembre 2007

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

Un'Istruzione Get o Istruzione Set (Visual Basic) in una proprietà NotOverridable comprende la parola chiave Private.

Nella trattazione che segue viene spiegato perché la proprietà NotOverridable e la parola chiave Private non possono essere combinate in una Istruzione Property.

  1. Una proprietà o una routine che non esegue l'override di una proprietà o di una routine di classe base è caratterizzata dall'impostazione predefinita NotOverridable.

  2. Tuttavia, una proprietà o una routine di una classe derivata che esegue l'override di una proprietà o di una routine di classe base è caratterizzata dall'impostazione predefinita Overridable. Per terminare la gerarchia di override, è possibile dichiararla NotOverridable. Questo è il solo contesto in cui si può utilizzare la proprietà NotOverridable. In altre parole, NotOverridable può essere utilizzata soltanto in combinazione con Overrides.

  3. Se una proprietà o una routine di classe base viene dichiarata Private (Visual Basic), una classe derivata non può eseguire l'override di quella proprietà o di quella routine in quanto non può accedervi. Questa è la ragione per cui la parola chiave Private non può essere utilizzata in combinazione con Overridable.

  4. Per poter eseguire l'override di una proprietà o di una routine, la proprietà o la routine che lo esegue deve avere in comune con queste non solo una firma identica, ma anche il medesimo livello di accesso. Questo implica che una proprietà o una routine che esegue un override non può essere Private perché una proprietà o una routine di cui può essere eseguito l'override non può essere dichiarata Private.

  5. Quindi, poiché la proprietà NotOverridable può essere dichiarata solo per una proprietà o una routine che esegue l'override, non è possibile combinarla con la parola chiave Private.

In base allo stesso ragionamento, le routine di proprietà individuali, vale a dire Get e Set, di una proprietà che esegue l'override non possono essere Private.

ID errore: BC31106

Per correggere l'errore

  • Rimuovere la parola chiave Private dall'istruzione Get o Set, oppure rimuovere le parole chiave Overrides e NotOverridable dall'istruzione Property.

Vedere anche

Attività

Procedura: dichiarare una proprietà con livelli di accesso misto

Concetti

Routine Property

Differenze tra shadowing e override