对于C#静态构造函数,很少在开发中使用,但的确是一种非常有用的开发方式。
C#静态构造函数的一个重要原因是:类有一些静态字段或属性,需要在第一次使用该类之前,从外部源中初始化这些静态字段或者属性。
用下面的例子来说明静态构造函数的使用:
namespace StaticConstructorSample
{
public class UserPreferences
{
public static readonly Color BackColor;
//静态构造函数
static UserPreferences()
{
DateTime now = new DateTime();
//如果是周末,程序背景颜色在打开时就加载为绿色,工作日为红色
if (now.DayOfWeek == DayOfWeek.Saturday || now.DayOfWeek == DayOfWeek.Sunday)
{
BackColor = Color.Green;
}
else
{
BackColor = Color.Red;
}
}
//实例构造函数
private UserPreferences()
{
//......
}
}
}
在整个类加载前,已经根据当前时间设置背景颜色。
需要注意的是:
1. 静态构造函数没有访问修饰符,因为其他构造函数重来不调用它;
2. 静态构造函数只调用一次,一定是在代码调用类之前运行;
3. 一个类至多有一个静态构造函数,显然,静态构造函数只能访问类的静态成员,不能访问类的实例成员。