メンバー '<メンバー名 1>' は暗黙的に '<暗黙的なメンバー名>' を宣言しますが、基底クラス '<基底クラス名>' のメンバー '<メンバー名 2>' に対して暗黙的に宣言されているメンバーと競合します

メンバー '<メンバー名 1>' は暗黙的に '<暗黙的なメンバー名>' を宣言しますが、基底クラス '<基底クラス名>' のメンバー '<メンバー名 2>' に対して暗黙的に宣言されているメンバーと競合します。 そのため、このメンバーを 'Shadows' であると宣言する必要があります。

派生クラスのメンバーが、基底クラスの暗黙的なメンバーと同じ名前を持つ暗黙的なメンバーを生成しています。 暗黙的なメンバーは Overloadsを指定しないため、コンパイラはこのメンバーが暗黙的な基底クラスのメンバーをシャドウ ( Shadows ) していると見なします。 このメンバーに Shadows キーワードを明示的に指定すると、コードが読みやすくなり、エラーが発生しにくくなります。

Visual Basic コンパイラは、宣言されている特定のプログラミング要素に対応して、暗黙的なメンバーを作成します。 次の表には、これらの暗黙なメンバー、つまり 統合メンバーをまとめています。

宣言された要素 暗黙的に作成されるメンバー
列挙 value__ のメンバー
イベント add_<eventname> プロシージャ

remove_<eventname> プロシージャ

<eventname>Event のフィールド

<eventname>EventHandler デリゲート
プロパティ get_<propertyname> プロシージャ

set_<propertyname> プロシージャ
My.Form メンバー、 My.WebService メンバー、または MyGroupCollectionAttribute 属性でマークされたクラスのメンバー m_<variablename> Static 変数

<variablename> プロパティ

get_<variablename> プロシージャ

set_<variablename> プロシージャ
WithEvents 変数 _<variablename> 変数

<variablename> プロパティ

get_<variablename> プロシージャ

set_<variablename> プロシージャ

名前競合のリスクがあるため、これらの暗黙的なメンバーのいずれかと同じ形式を使用して、宣言されたプログラミング要素に名前を付けることは避ける必要があります。 たとえば、 get_ または set_で始まる要素名を避ける必要があります。

既定では、このメッセージは警告です。 警告を非表示にする方法や、警告をエラーとして扱う方法の詳細については、「 Configuring Warnings in Visual Basic」をご覧ください。

エラー ID: BC40018

このエラーを解決するには

  • 暗黙的な基底クラスのメンバーを隠す、つまりシャドウする場合は、派生クラスのメンバーの宣言に Shadows キーワードを含めます。

  • 暗黙的な基底クラスのメンバーをシャドウしない場合は、前の表に示した名前との競合を避けるために、派生クラスのメンバーの名前を変更します。

関連項目