コンパイラ エラー CS0473
明示的なインターフェイスの実装 'method name' に一致するインターフェイス メンバーが 2 つ以上あります。 実際にどのインターフェイス メンバーが選択されるかは実装に依存しています。 代わりに、明示的ではない実装の使用をお勧めします。
ジェネリック メソッドが非ジェネリック メソッドと同じシグネチャを取得する場合があります。 問題は、どのメソッドがどのスロットにバインドするか明確に示すための方法が、共通言語基盤 (CLI: Common Language Infrastructure) のメタデータ システムにないことです。 この決定は CLI により行われます。
エラーを修正するには、明示的な実装を除去し、暗黙的な実装 public int TestMethod(int)
に両方のインターフェイス メソッドを実装します。
次のコードでは CS0473 が生成されます。
public interface ITest<T>
{
int TestMethod(int i);
int TestMethod(T i);
}
public class ImplementingClass : ITest<int>
{
int ITest<int>.TestMethod(int i) // CS0473
{
return i + 1;
}
public int TestMethod(int i)
{
return i - 1;
}
}
class T
{
static int Main()
{
ImplementingClass a = new ImplementingClass();
if (a.TestMethod(0) != -1)
return -1;
ITest<int> i_a = a;
System.Console.WriteLine(i_a.TestMethod(0).ToString());
if (i_a.TestMethod(0) != 1)
return -1;
return 0;
}
}
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET に関するフィードバック
.NET はオープンソース プロジェクトです。 フィードバックを提供するにはリンクを選択します。