c# – 使用显式接口实现是否意味着隐藏功能?

我使用接口来解耦我的代码.我很好奇,是否使用显式接口实现隐藏功能?

例:

public class MyClass : IInterface
{
     void IInterface.NoneWillCall(int ragh) { }
}

只有通过界面明确提供此功能有什么好处和具体用例?

最佳答案
根据我的经验,它有两个主要用途:

>它允许您通过返回值重载方法.例如,IEnumerable< T>和IEnumerable都声明GetEnumerator()方法,但具有不同的返回类型 – 所以要实现这两者,你必须明确地实现至少其中一个.当然在这个问题中,这两个方法都是由接口提供的,但有时你只想给一个“普通”方法,使用与接口方法不同的类型(通常是更具体的方法).
>它允许您以“令人沮丧”的方式实现接口的一部分 – 例如,ReadOnlyCollection< T>实现IList< T>,但使用显式接口实现“阻止”变异调用.这将阻止通过其具体类型了解对象的调用者调用不适当的方法.这有些界面太宽泛或者实施不当 – 如果你不能履行所有合同,你为什么要实现一个界面呢? – 但从实用的角度来看,它可能很有用.

转载注明原文:c# – 使用显式接口实现是否意味着隐藏功能? - 代码日志