C#访问修饰符(Public/Private/Protected/Internal)
2015-12-03 14:48
585 查看
访问修饰符(或者叫访问控制符)是面向对象语言的特性之一,用于对类、类成员函数、类成员变量进行访问控制。同时,访问控制符也是语法保留关键字,用于封装组件。
参考MSDN中修饰符说明:
public
同一程序集中的任何其他代码或引用该程序集的其他程序集都可以访问该类型或成员。
private
只有同一类或结构中的代码可以访问该类型或成员。
protected
只有同一类或结构或者此类的派生类中的代码才可以访问的类型或成员。
internal
同一程序集中的任何代码都可以访问该类型或成员,但其他程序集中的代码不可以。
protected internal
由其声明的程序集或另一个程序集派生的类中任何代码都可访问的类型或成员。 从另一个程序集进行访问必须在类声明中发生,该类声明派生自其中声明受保护的内部元素的类,并且必须通过派生的类类型的实例发生。
同时,C#中类、枚举、结构体等修饰符规则表如下:
小结:
class 被标记为
Namespace默认为public修饰符,且不能添加修饰符。
class可以使用
类成员可使用所有修饰符,默认为
基类必须必子类有更大的修饰符访问权限,才可被子类继承.
函数返回值的修饰符要有能访问返回值的权限.
类的const变量,可以彼此引用,但是不能形成循环引用.
【详细介绍及来源(http://my.oschina.net/powertoolsteam/blog/420004)】
参考MSDN中修饰符说明:
public
同一程序集中的任何其他代码或引用该程序集的其他程序集都可以访问该类型或成员。
private
只有同一类或结构中的代码可以访问该类型或成员。
protected
只有同一类或结构或者此类的派生类中的代码才可以访问的类型或成员。
internal
同一程序集中的任何代码都可以访问该类型或成员,但其他程序集中的代码不可以。
protected internal
由其声明的程序集或另一个程序集派生的类中任何代码都可访问的类型或成员。 从另一个程序集进行访问必须在类声明中发生,该类声明派生自其中声明受保护的内部元素的类,并且必须通过派生的类类型的实例发生。
Sealed Classes
Sealed修饰符的类,不可被其他类继承。同时,C#中类、枚举、结构体等修饰符规则表如下:
小结:
Class成员的默认修饰符为private
class 被标记为
internal仅能被当前程序集访问.
Namespace默认为public修饰符,且不能添加修饰符。
class可以使用
public 或
internal修饰符.不能使用修饰符
protected、
private. class默认的修饰符为
internal.
类成员可使用所有修饰符,默认为
private.
Protected internal修饰符约定了仅在继承类内有效.
在public 与
internal修饰符之间,
public通常有更大的访问权限.
基类必须必子类有更大的修饰符访问权限,才可被子类继承.
函数返回值的修饰符要有能访问返回值的权限.
sealed Class无法被子类继承.
const变量,需要在声明时完成初始化,在编码阶段不能初始化.
类的const变量,可以彼此引用,但是不能形成循环引用.
const变量在编译器进行初始化,故const的运算可被执行.
const变量不能被标记为
static.
Static 变量在类首次被加载时候初始化.
int类型默认初始化为0,bool被初始化为False.
static readonly 字段无法被赋值,
static构造函数或者变量初始化时刻除外.
【详细介绍及来源(http://my.oschina.net/powertoolsteam/blog/420004)】