我在Class中有方法,它是Interface的实现.当我做它显式实现时,我遇到了编译器错误
The modifier 'public' is not valid for this item
Run Code Online (Sandbox Code Playgroud)
为什么不允许public
显式接口实现?
Ric*_*lay 67
显式接口实现的原因是避免名称冲突,最终结果是在调用这些方法之前必须将对象显式地转换为该接口.
您可以认为这些方法不是在类上公开,而是直接绑定到接口.没有理由指定public/private/protected,因为它总是公开的,因为接口不能有非公共成员.
(Microsoft 概述了显式接口实现)
ada*_*ost 27
明确的成员实现允许消除具有相同签名的接口成员的歧义.
如果没有明确的接口成员实现,那么类或结构就不可能具有相同签名和返回类型的接口成员的不同实现.
为什么显式实现接口不能公开?显式实现成员时,不能通过类实例访问它,而只能通过接口的实例访问它.
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();
.....
Run Code Online (Sandbox Code Playgroud)
无法通过类或结构实例访问Explict接口成员实现.