除了静态字段和方法,C#还支持静态构造函数,用于对类(而不是类的实例)进行初始化。静态构造函数不显示调用。相反,“运行时”在首次访问类时自动调用静态构造函数。“首次访问类”可能发生在调用普通构造函数时,也可能发生在访问类的静态方法或字段时。由于静态构造函数不能显示调用,所以不允许任何参数。
静态构造函数的作用是将类中的静态数据初始化成特定值,尤其是在无法通过声明时的一次简单赋值来获得初始值的时候。
class Employee
{
static Employee()
{
Random randomGenerator = new Random();
NextId = randomGenerator.Next(101, 999);
}
public static int NextId = 42;
}
如代码所示,假如对NextId的赋值既在静态构造函数中进行,又在声明时进行,那么当初始化结束时,所得到的的是由randomGenerator.Next(101, 999)生成的随机数,结论是静态构造函数中的赋值优先于声明时的赋值,这和实例字段是一样的。