編譯器錯誤 CS0473
明確介面實作 'method name' 符合多個介面成員。 實際選擇哪個介面成員視實作而定。 請考慮改用非明確的實作。
在某些情況下,泛型方法可能會取得和非泛型方法相同的特徵標記。 問題是在通用語言基礎結構 (CLI) 中繼資料系統中,無法明確描述哪個方法繫結至哪個位置。 它是根據 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;
}
}