C#访问修饰符(Public/Private/Protected/Internal)


访问修饰符(或者叫访问控制符)是面向对象语言的特性之一,用于对类、类成员函数、类成员变量进行访问控制。同时,访问控制符也是语法保留关键字,用于封装组件。


参考MSDN中修饰符说明:

public

同一程序集中的任何其他代码或引用该程序集的其他程序集都可以访问该类型或成员。

private

只有同一类或结构中的代码可以访问该类型或成员。

protected

只有同一类或结构或者此类的派生类中的代码才可以访问的类型或成员。

internal

同一程序集中的任何代码都可以访问该类型或成员,但其他程序集中的代码不可以。

protected internal

由其声明的程序集或另一个程序集派生的类中任何代码都可访问的类型或成员。 从另一个程序集进行访问必须在类声明中发生,该类声明派生自其中声明受保护的内部元素的类,并且必须通过派生的类类型的实例发生。

Sealed Classes

Sealed修饰符的类,不可被其他类继承。


同时,C#中类、枚举、结构体等修饰符规则表如下:

image


小结:

  1. Class成员的默认修饰符为private

  2. class 被标记为internal仅能被当前程序集访问.

  3. Namespace默认为public修饰符,且不能添加修饰符。

  4. class可以使用public 或 internal修饰符.不能使用修饰符 protectedprivate. class默认的修饰符为internal.

  5. 类成员可使用所有修饰符,默认为 private.

  6. Protected internal修饰符约定了仅在继承类内有效.

  7. 在public 与 internal修饰符之间,public通常有更大的访问权限.

  8. 基类必须必子类有更大的修饰符访问权限,才可被子类继承.

  9. 函数返回值的修饰符要有能访问返回值的权限.

  10. sealed Class无法被子类继承.

  11. const变量,需要在声明时完成初始化,在编码阶段不能初始化.

  12. 类的const变量,可以彼此引用,但是不能形成循环引用.

  13. const变量在编译器进行初始化,故const的运算可被执行.

  14. const变量不能被标记为static.

  15. Static 变量在类首次被加载时候初始化. int类型默认初始化为0,bool被初始化为False.

  16. static readonly 字段无法被赋值,static构造函数或者变量初始化时刻除外.


【详细介绍及来源(http://my.oschina.net/powertoolsteam/blog/420004)】




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章