Il membro '<nomemembro1>' dichiara in modo implicito '<nomemembroimplicito>', che è in conflitto con un membro dichiarato in modo implicito per il membro '<nomemembro2>' nella classe base '<nomeclassebase>'

Aggiornamento: novembre 2007

Messaggio di errore

Il membro '<nomemembro1>' dichiara in modo implicito '<nomemembroimplicito>', che è in conflitto con un membro dichiarato in modo implicito per il membro '<nomemembro2>' nella classe base '<nomeclassebase>'. Il membro, dunque, deve essere dichiarato 'Shadows'.
Member '<membername1>' implicitly declares '<implicitmembername>', which conflicts with a member implicitly declared for member '<membername2>' in the base class '<baseclassname>'. So the member should be declared 'Shadows'.

Il membro di una classe derivata genera un membro implicito con lo stesso nome del membro implicito della classe base. Poiché i membri impliciti non specificano Overloads, il compilatore presume che questo membro nasconda (Shadows) il membro implicito della classe base. Il codice risulta più leggibile e meno soggetto a errori, se si specifica esplicitamente la parola chiave Shadows relativa a questo membro.

Il compilatore Visual Basic crea membri impliciti corrispondenti a determinati elementi di programmazione dichiarati. Nella tabella riportata di seguito sono riepilogati questi membri impliciti o sintetici.

Elemento dichiarato

Membri creati in modo implicito

Enumerazione

Membro value__

Evento

Routine add_<eventname>

Routine remove_<eventname>

Campo <eventname>Event

Delegato <eventname>EventHandler

Proprietà

Routine get_<propertyname>

Routine set_<propertyname>

Membro My.Form, membro My.WebService o membro di una classe contrassegnata con l'attributo MyGroupCollectionAttribute

m_<variablename> Variabile Static

Proprietà <variablename>

Routine get_<variablename>

Routine set_<variablename>

Variabile WithEvents

Variabile _<variablename>

Proprietà <variablename>

Routine get_<variablename>

Routine set_<variablename>

A causa del rischio di conflitti tra nomi, si consiglia di evitare di denominare eventuali elementi di programmazione dichiarati utilizzando la stessa forma di uno di questi membri impliciti. Ad esempio è consigliabile evitare qualsiasi nome di elemento che inizia con get_ o set_.

Per impostazione predefinita, si tratta di un messaggio di avviso. Per ulteriori informazioni su come nascondere gli avvisi o considerarli come errori, vedere Configurazione degli avvisi in Visual Basic.

ID errore: BC40018

Per correggere l'errore

  • Se si intende nascondere il membro implicito della classe base, ossia eseguirne lo shadowing, includere la parola chiave Shadows nella dichiarazione del membro della classe derivata.

  • Se non si intende nascondere il membro implicito della classe base, modificare il nome del membro della classe derivata per evitare conflitti con i nomi elencati nella tabella precedente.

Vedere anche

Concetti

Nomi di elementi dichiarati