编译器错误 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;
}
}