C#访问修饰符

访问修饰符

  • public:同一程序集中的任何其他代码或引用该程序集的其他程序集都可以访问该类型或成员。
  • private:只有同一 class 或 struct 中的代码可以访问该类型或成员。
  • protected:只有同一 class 或者从该 class 派生的 class 中的代码可以访问该类型或成员。
  • internal:同一程序集中的任何代码都可以访问该类型或成员,但其他程序集中的代码不可以。
  • protected internal:该类型或成员可由对其进行声明的程序集或另一程序集中的派生 class 中的任何代码访问。
  • private protected:只有在其声明程序集内,通过相同 class 中的代码或派生自该 class 的类型,才能访问类型或成员。

默认可访问性

类和结构:访问修饰符可以为 public 或 internal, 如果未指定任何访问修饰符,则默认设置为 Internal

类成员和结构成员:结构成员(包括嵌套的类和结构)可以声明为 publicinternal 或 private。 类成员(包括嵌套的类和结构)可以声明为 

publicprotected internalprotectedinternalprivate protected 或 private。 默认情况下,类成员和结构成员(包括嵌套的类和结构)的访问级别为 private。

接口:可以声明为 public 或 internal,接口默认设置为 internal 访问级别。 接口成员默认为 public

枚举:枚举可以声明为public 或 internal,默认为internal;枚举成员始终为 public,并且不能应用任何访问修饰符。

访问限制

派生类不能具有高于其基类型的可访问性,换而言之,不能具有派生自内部类 A 的公共类 B。 如果允许这样,则它将具有使 A 公开的效果,因为可从派生类访问 A 的所有受保护的或内部成员

派生类重写基类方法时,派生类不能修改方法访问修饰符,需与基类方法访问修饰符一致。

 

 

参考文档

https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/classes-and-structs/access-modifiers

 

posted @ 2020-08-29 22:32  温故纳新  阅读(666)  评论(0编辑  收藏  举报