作为标题,在C#中,有没有可能有人想要一个受保护的或内部的接口?
可能重复:为什么我不能拥有受保护的接口成员?
可能重复:为什么我不能拥有受保护的接口成员?
因为接口在简单的术语中是“向外部世界展示”的视图,既然是为了外部世界而存在,那么将其成员设置为受保护或私有没有任何意义。
换句话说,它是与外部世界签订的合同,指定实现此接口的类执行一定的操作。因此,隐藏其中某些部分毫无意义。
但是,接口本身可以具有像protected
或internal
等访问说明符,从而将“外部世界”限制为“整个外部世界”的子集。
接口成员总是公共的,因为接口的目的是使其他类型能够访问一个类或结构。不能应用任何访问修饰符到接口成员。
所有接口方法都是公共的。你不能在接口中创建访问修饰符。如果你想使用一个,可以使用抽象类。
接口是编码契约,这正是它不允许在其方法签名中使用除Public之外的任何访问修饰符的原因。 但是一个接口本身可以是Internal而不是private或protected,Internal允许在程序集内部访问,这是完全可以的。