C#访问修饰符
访问修饰符
- public:同一程序集中的任何其他代码或引用该程序集的其他程序集都可以访问该类型或成员。
- private:只有同一
class
或struct
中的代码可以访问该类型或成员。 - protected:只有同一
class
或者从该class
派生的class
中的代码可以访问该类型或成员。 - internal:同一程序集中的任何代码都可以访问该类型或成员,但其他程序集中的代码不可以。
- protected internal:该类型或成员可由对其进行声明的程序集或另一程序集中的派生
class
中的任何代码访问。 - private protected:只有在其声明程序集内,通过相同
class
中的代码或派生自该class
的类型,才能访问类型或成员。
默认可访问性
类和结构:访问修饰符可以为 public
或 internal,
如果未指定任何访问修饰符,则默认设置为 Internal
。
类成员和结构成员:结构成员(包括嵌套的类和结构)可以声明为 public
、internal
或 private
。 类成员(包括嵌套的类和结构)可以声明为
public
、protected internal
、protected
、internal
、private protected
或 private
。 默认情况下,类成员和结构成员(包括嵌套的类和结构)的访问级别为 private。
接口:可以声明为 public
或 internal
,接口默认设置为 internal
访问级别。 接口成员默认为 public
。
枚举:枚举可以声明为public
或 internal,默认为internal
;枚举成员始终为 public
,并且不能应用任何访问修饰符。
访问限制
派生类不能具有高于其基类型的可访问性,换而言之,不能具有派生自内部类 A
的公共类 B
。 如果允许这样,则它将具有使 A
公开的效果,因为可从派生类访问 A
的所有受保护的或内部成员
派生类重写基类方法时,派生类不能修改方法访问修饰符,需与基类方法访问修饰符一致。
参考文档