可能重复:
为什么我不能拥有受保护的接口成员?
作为标题,在C#中.是否有人可能想要受保护或内部接口?
我从以下属性收到编译错误.
错误是:
"修饰符'public'对此项无效"
public System.Collections.Specialized.StringDictionary IWorkItemControl.Properties
{
get { return properties; }
set { properties = value; }
}
Run Code Online (Sandbox Code Playgroud)
但如果我删除IWorkItemControl它编译好.
为什么我收到此错误,签名中是否有/没有接口名称有什么区别?
interface方法的访问修饰符是什么?它应该是public或者protected因为您在实现它们时可以访问它们(这是有道理的).它也应该是abstract因为它们没有实现.但是最近我一直在读一本名为CLR Via C#的书,关于接口的章节说明如下
CLR要求将
interface方法标记为virtual.如果未virtual在源代码中明确标记方法,则编译器将方法标记为virtual和sealed.
当您标记interface成员virtual编译器时,会抱怨访问修饰符无效.我的意思是没有访问修饰符对任何东西有效interface而不是编译器给它们的默认值吗?有人能说清楚吗?