阅读article我在方法名称中遇到了以下C#语法。
private class sortYearAscendingHelper : IComparer
{
int IComparer.Compare(object a, object b)
{
...
}
}
我理解Compare
方法是IComparer
接口的方法,但来自C++
我不确定这种语法的含义。如果Compare是界面的一部分,我希望仅提及int Compare(...)
。为什么我们必须指定类?
答案 0 :(得分:12)
这是一个显式接口实现当您从包含相似(相同签名)函数但需要为每个接口实现不同实现的多个接口派生时,可以使用它。
可以在MSDN找到更多信息。
(来自链接页面的示例):
如果两个接口成员不执行相同的功能, 但是,这可能导致一个或两个的错误实现 的接口。可以实现接口成员 显式创建一个只通过该方法调用的类成员 接口,并且特定于该接口。这是通过 使用接口名称和句点命名类成员。 例如:
public class SampleClass : IControl, ISurface
{
void IControl.Paint()
{
System.Console.WriteLine("IControl.Paint");
}
void ISurface.Paint()
{
System.Console.WriteLine("ISurface.Paint");
}
}
类成员IControl.Paint只能通过IControl获得 接口和ISurface.Paint只能通过ISurface获得。都 方法实现是分开的,也不是直接可用的 在课堂上。