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