什么是显式接口成员实现以及原因

时间:2014-01-06 10:43:56

标签: c# interface

我总是使用类似于抽象类的interfgaces - 只是为了确保所有对象都具有一致的外部方法等。

但是从MSDN,我不明白:

interface ISampleInterface
{
    void SampleMethod();
}

class ImplementationClass : ISampleInterface
{
    // Explicit interface member implementation:  
    void ISampleInterface.SampleMethod()
    {
        // Method implementation.
    }

    static void Main()
    {
        // Declare an interface instance.
        ISampleInterface obj = new ImplementationClass();

        // Call the member.
        obj.SampleMethod();
    }
}

为什么在方法声明中明确提到了接口名称,为什么没有它就无法工作? 另外为什么接口是instantionated,不应该只是实现它的类的实例?

1 个答案:

答案 0 :(得分:1)

  

为什么方法中明确提到了接口名称   宣言以及为什么没有它就行不通?

有时,明确实现您的界面非常方便。请参阅此其他Stack Overflow问题答案:https://stackoverflow.com/questions/408415/why-explicit-interface-implementation

  

为什么界面是实例化的,不应该只是   实现它的类的实例?

他们将ImplementationClass实例化,但将其向下转移到ISampleInterface,从而阻止他们触及非接口合同保证的方法/属性。