公共显式界面有什么意义?这与私有界面有什么不同?
interface IYer
{
void Hello();
}
interface INer
{
void Hello();
}
class MyClass : IYer, INer
{
public void IYer.Hello()
{
throw new NotImplementedException();
}
public void INer.Hello()
{
throw new NotImplementedException();
}
}
答案 0 :(得分:1)
没有公开的显式接口实现。显式实现接口的唯一方法是让方法具有默认的可访问性,并在方法名称前加上接口名称:
class MyClass : IYer, INer
{
//compiles OK
void IYer.Hello()
{
throw new NotImplementedException();
}
//error CS0106: The modifier 'public' is not valid for this item
public void INer.Hello()
{
throw new NotImplementedException();
}
}
这是MSDN对此的评价:
显式接口声明中不允许使用public关键字。在这种情况下,请从显式接口声明中删除public关键字。
答案 1 :(得分:1)
我不打算解决上面的代码,我相信其他人指出了错误,但我会自己回答这个问题。
答案 2 :(得分:0)
最大的区别是你的公共显式接口不合法,不会编译。实际上,您应该收到错误,“修饰符'public'对显式接口实现无效。”