什么是显式接口成员实现以及为什么[重复]

Posted

技术标签:

【中文标题】什么是显式接口成员实现以及为什么[重复]【英文标题】:What is explicit interface member implementation and why [duplicate] 【发布时间】:2014-01-23 18:05:35 【问题描述】:

我一直在使用类似于抽象类的接口——只是为了确保所有对象都具有一致的外部方法等。

但从 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();
    

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

【问题讨论】:

【参考方案1】:

为什么在方法中明确提到了接口名称 声明以及为什么没有它就不能工作?

有时让您的界面显式实现会很方便。查看其他 Stack Overflow 问题的答案:https://***.com/questions/408415/why-explicit-interface-implementation

还有为什么要实例化接口,不应该只是 实现它的类的实例?

他们将ImplementationClass 实例化,但将其转换为ISampleInterface,从而防止自己接触非接口契约保证的方法/属性。

【讨论】:

谢谢!我只是想知道如果我将显式更改为隐式和实例化类而不是接口,它为什么不起作用。 @user970696:它应该在不向下转换到界面的情况下隐式工作。也许您可以在另一个问题中发布您的使用代码? 我刚刚从方法声明中删除了 ISampleInterface,我收到一条消息,指出这个类没有实现 SampleMethod。

以上是关于什么是显式接口成员实现以及为什么[重复]的主要内容,如果未能解决你的问题,请参考以下文章

区别 b/w 在 C# 中隐式实现成员和显式实现成员 [重复]

C#图解教程 第十五章 接口

为什么显式接口方法实现看不到其他接口方法? [重复]

隐式与显式接口实现[重复]

C# 显式接口成员实现

为啥接口的显式实现不能公开?