在创建类型的任何实例之前,我们需要初始化这个类型中的静态成员变量,C#可以通过静态初始化器或者静态构造函数来完成这个任务,其中静态构造器是一个特殊的函数,它会在一个类的任何方法、变零或者属性被访问之前执行。
我们不应该使用类型的示例构造函数或者类型中的某些非静态方法来初始化类型的静态成员变量。
如果静态成员初始化的过程不复杂,那么我们可以在类型的初始化器中对其进行初始化;如果静态成员初始化时,需要执行大量的逻辑操作,那么我们可以将其初始化的过程提取到静态构造函数中。
我们可以使用静态构造函数来实现设计模式中的单例模式,如以下代码所示。
代码
1 public class MySingleton
2 {
3 private static readonly MySingleton _theOneAndOnly =
4 new MySingleton( );
5
6 public static MySingleton TheOnly
7 {
8 get
9 {
10 return _theOneAndOnly;
11 }
12 }
13
14 private MySingleton( )
15 {
16 }
17
18 // remainder elided
19 }
和示例初始化器类似,静态初始化器会在静态构造函数中的显式代码之前执行,同样,静态初始化器也会在基类的静态构造函数之前执行。
静态初始化器和静态构造函数为我们类型中的静态成员提供了最清晰的初始化方式,使用这种方法,代码既容易阅读,也不易发生错误。C#语言使用它们很好的解决了其他语言中静态成员初始化的问题。