使用点表示法实现C#方法

时间:2014-07-21 17:43:20

标签: c# syntax

阅读article我在方法名称中遇到了以下C#语法。

private class sortYearAscendingHelper : IComparer
{
   int IComparer.Compare(object a, object b)
   {
       ...
   }
}

我理解Compare方法是IComparer接口的方法,但来自C++我不确定这种语法的含义。如果Compare是界面的一部分,我希望仅提及int Compare(...)。为什么我们必须指定类?

1 个答案:

答案 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获得。都   方法实现是分开的,也不是直接可用的   在课堂上。