C#中的static

静态类

和所有类类型一样,当加载引用静态类的程序时,.NET Framework 公共语言运行时 (CLR) 将加载该静态类的类型信息。程序不能指定加载静态类的确切时间。但是,可以保证在程序中首次引用该类前加载该类,并初始化该类的字段并调用其静态构造函数。静态构造函数仅调用一次,在程序驻留的应用程序域的生存期内,静态类一直保留在内存中

下面介绍静态类的主要特性

• 仅包含静态成员。

• 无法实例化(不能使用 new 关键字创建静态类类型的变量)。

• 是密封的(不可以被继承)。

• 不能包含实例构造函数。

 

静态成员

非静态类可以包含静态的方法、字段、属性或事件。即使没有创建类的实例,也可以调用该类中的静态成员。

更常见的做法是声明具有一些静态成员的非静态类,而不是将整个类声明为静态类。静态字段有两个常见的用法:一是记录已实例化对象的个数,二是存储必须在所有实例之间共享的值。

静态方法可以被重载但不能被重写,因为它们属于类,不属于类的任何实例。

C#不支持静态局部变量(在方法范围内声明的变量)。

静态成员在第一次被访问之前并且在调用静态构造函数(如有存在)之前进行初始化。

 

静态构造函数

静态构造函数用于初始化任何静态数据,或用于执行仅需执行一次的特定操作。

静态构造函数具有以下特点

• 静态构造函数既没有访问修饰符,也没有参数

• 在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数来初始化类。

无法直接调用静态构造函数。

• 在程序中,用户无法控制何时执行静态构造函数

• 静态构造函数的典型用途是:当类使用日志文件时,将使用这种构造函数向日志文件中写入项。

• 静态构造函数在为非托管代码创建包装类时也很有用,此时该构造函数可以调用 LoadLibrary 方法。

• 如果静态构造函数引发异常,运行时将不会再次调用该构造函数,并且在程序运行所在的应用程序域的生存期内,类型将保持未初始化。

 

Reference:

http://msdn.microsoft.com/zh-cn/library/79b3xss3(v=vs.90).aspx

http://msdn.microsoft.com/zh-cn/library/k9x6w0hc(v=vs.90).aspx

posted @ 2013-12-16 17:52  meteor688  阅读(195)  评论(0)    收藏  举报