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

我在接口的实现类的方法。 当我做明确的实现时,我得到了编译器错误

The modifier 'public' is not valid for this item 

为什么不允许public显式的接口实现?

显式接口实现的原因是为了避免名称与最终结果的冲突,因为在调用这些方法之前必须将对象明确地转换到该接口。

你可以把这些方法看作是在课堂上公开的,而是直接绑定到接口上。 没有理由指定公共/私有/保护,因为它将永远是公开的,因为接口不能有非公共成员。

(Microsoft 对显式接口实现进行了概述 )

显式成员实现允许使用相同签名来消除接口成员的歧义。

如果没有明确的接口成员实现,则类或结构不可能具有相同签名和返回types的接口成员的不同实现。

为什么接口的显式实现不能公开? 当一个成员被明确地实现时,它不能通过类实例来访问,而只能通过接口的一个实例来访问。

 public interface IPrinter { void Print(); } public interface IScreen { void Print(); } public class Document : IScreen,IPrinter { void IScreen.Print() { ...} void IPrinter.Print() { ...} } ..... Document d=new Document(); IScreen i=d; IPrinter p=d; i.Print(); p.Print(); ..... 

显式接口成员实现不能通过类或结构实例访问。