有一个很好的,非常详细的博客文章。
基本上,通过隐式接口实现,您可以访问接口方法和属性,就像它们是类的一部分一样。使用显式接口实现,您只能在将其视为该接口时访问它们。
就何时使用另一个接口而言,有时您必须使用显式接口实现,因为您要么具有与接口具有相同签名的属性/方法,要么想要实现具有相同签名的两个接口并具有不同的实现那些匹配的属性/方法。
以下规则来自Brad Abrams
设计指南博客。
- 不要 将显式成员用作安全边界。任何将实例投射到接口的客户端都可以调用它们。
- 不要 使用显式成员来隐藏实现细节
- 不要 使用显式成员来近似私有接口的实现。
- 不要 公开另一种方法来访问允许子类重写的任何显式实现的成员。除非会发生冲突,否则请使用相同的方法名称。
在布拉德(Brad)博客的评论中还提到,在对值类型使用显式实现时涉及拳击,因此请注意性能成本。


![隐式与显式接口实现[重复] 隐式与显式接口实现[重复]](http://www.mshxw.com/aiimages/31/415296.png)
