什么是显式接口成员实现以及为什么使用它

9 浏览
0 Comments

什么是显式接口成员实现以及为什么使用它

以前我总是将接口与抽象类类似地使用-只是为了确保所有对象都具有一致的外部方法等。但是从MSDN上看,我没有理解到这一点:\n接口ISampleInterface\n{\n void SampleMethod();\n}\n类ImplementationClass : ISampleInterface\n{\n // 显式接口成员实现:\n void ISampleInterface.SampleMethod()\n {\n // 方法实现。\n }\n static void Main()\n {\n // 声明一个接口实例。\n ISampleInterface obj = new ImplementationClass();\n // 调用成员。\n obj.SampleMethod();\n }\n}\n为什么在方法声明中明确指出接口名称,为什么没有它就无法工作?\n另外为什么要实例化接口,难道不应该只是实现它的类的实例吗?

0
0 Comments

显式接口成员实现是指在方法声明中明确指定接口名称,为什么必须这样做?有什么解决方法?

有时候,将接口显式实现是很方便的。可以参考Stack Overflow上的另一个问题的答案:https://stackoverflow.com/questions/408415

另外,为什么要实例化接口?难道不应该只实例化实现了接口的类吗?

他们实例化了ImplementationClass,但将其向下转换为ISampleInterface,以此防止触及非接口合约保证的方法/属性。

谢谢!我只是想知道,如果我将显式接口实现更改为隐式接口实现并且实例化类而不是接口,为什么会出现问题。

应该隐式地工作,而无需将其向下转换为接口。也许你可以在另一个问题中发布你的使用代码?

我刚刚从方法声明中删除了ISampleInterface,然后收到一条消息,说这个类没有实现SampleMethod。

0