编译器错误 CS0473
更新:2007 年 11 月
错误消息
显式接口实现“method name”与多个接口成员匹配。实际选择哪个接口成员将取决于实现。请考虑改用非显式接口实现。
在有些情况下,泛型方法可能会获取与非泛型方法相同的签名。问题在于 Common Language Infrastructure (CLI) 元数据系统无法明确规定将哪个方法绑定到哪个槽。这需要 CLI 做出判断。
说明: |
---|
在 Visual Studio 2008 中的有些地方会引发此错误,而在 Visual Studio 2005 中的这些地方则不会引发此错误。 |
更正此错误
- 消除显式实现,并且只包含实现这两个接口方法的隐式实现 public int TestMethod(int)。
示例
下面的代码生成 CS0473:
// cs0473.cs
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;
}
}