Member '<Membername1>' deklariert implizit '<Name des impliziten Members>', was einen Konflikt mit einem Member in Basis-<Basisklassenname> verursacht
Aktualisiert: November 2007
Fehlermeldung
Member "<Membername1>" deklariert implizit "<Name des impliziten Members>", was einen Konflikt mit einem Member in Basis-<Basisklassenname> verursacht. Der Member sollte daher nicht als "Overloads" deklariert werden.
Member '<membername1>' implicitly declares '<implicitmembername>', which conflicts with a member in the base class '<baseclassname>', and so the member should not be declared 'Overloads'
Eine Eigenschaft in einer abgeleiteten Klasse generiert einen impliziten Member mit demselben Namen wie ein Member der Basisklasse, und für die Eigenschaft wird das Overloads-Schlüsselwort angegeben.
Eine Überladung wird verwendet, um mehrere Versionen einer Eigenschaft oder Prozedur in derselben Klasse zu definieren. Sie können eine zusätzliche Version eines Basisklassenmembers nur definieren, wenn für diesen Basisklassenmember bereits Overloads angegeben ist. Da für den Basisklassenmember, der den Konflikt verursacht, kein Overloads angegeben ist, geht der Compiler davon aus, dass diese Eigenschaft auf den impliziten Basisklassenmember Shadows anwendet.
Der Visual Basic-Compiler erstellt implizite Member, die bestimmten von Ihnen deklarierten Programmierelementen entsprechen. In der folgenden Tabelle werden diese impliziten bzw. synthetischen Member zusammengefasst.
Deklariertes Element |
Implizit erstellte Member |
---|---|
Enumeration |
value__-Member |
Ereignis |
add_<eventname>-Prozedur remove_<eventname>-Prozedur <eventname>Event-Feld <eventname>EventHandler-Delegat |
Eigenschaft |
get_<propertyname>-Prozedur set_<propertyname>-Prozedur |
My.Form-Member, My.WebService-Member oder Member einer Klasse, die mit dem MyGroupCollectionAttribute-Attribut markiert ist |
m_<variablename>Static-Variable <variablename>-Eigenschaft get_<variablename>-Prozedur set_<variablename>-Prozedur |
WithEvents-Variable |
_<variablename>-Variable <variablename>-Eigenschaft get_<variablename>-Prozedur set_<variablename>-Prozedur |
Aufgrund des Risikos von Namenskonflikten sollte es vermieden werden, deklarierte Programmierelemente in derselben Form wie diese impliziten Member zu benennen. Vermeiden Sie z. B. Elementnamen, die mit get_ oder set_ beginnen.
Standardmäßig ist diese Meldung eine Warnung. Weitere Informationen über das Ausblenden von Warnungen bzw. über die Behandlung von Warnungen als Fehler finden Sie unter Konfigurieren von Warnungen in Visual Basic.
Fehler-ID: BC40022
So beheben Sie diesen Fehler
Wenn Sie den Basisklassenmember ausblenden bzw. Shadowing auf diesen anwenden möchten, ersetzen Sie in der Eigenschaftendeklaration das Overloads-Schlüsselwort durch das Shadows-Schlüsselwort.
Wenn Sie auf den impliziten Basisklassenmember kein Shadowing anwenden möchten, ändern Sie den Namen der Eigenschaft, um die in der vorherigen Tabelle beschriebenen Namenskonflikte zu vermeiden.