interface方法的访问修饰符是什么?它应该是public或者protected因为您在实现它们时可以访问它们(这是有道理的).它也应该是abstract因为它们没有实现.但是最近我一直在读一本名为CLR Via C#的书,关于接口的章节说明如下
CLR要求将
interface方法标记为virtual.如果未virtual在源代码中明确标记方法,则编译器将方法标记为virtual和sealed.
当您标记interface成员virtual编译器时,会抱怨访问修饰符无效.我的意思是没有访问修饰符对任何东西有效interface而不是编译器给它们的默认值吗?有人能说清楚吗?
接口可以包含方法,属性,事件,索引器或这四种成员类型的任意组合.有关示例的链接,请参阅相关章节.接口不能包含常量,字段,运算符,实例构造函数,析构函数或类型.接口成员自动公开,并且不能包含任何访问修饰符.成员也不能是静态的.
关于接口成员的实现:
要实现接口成员,实现类的相应成员必须是公共的,非静态的,并且具有与接口成员相同的名称和签名.
因此,您无法使用protected一个实现接口成员.