使用静态构造函数的一个原因是:在第一次使用类之前,用静态构造函数来初始化类(当然也包括结构体,这里用类做阐述)中一些静态字段或属性。比如对字段或属性进行一系列的操作进行初始化,而不希望每次实例化类的时候改变他,用静态构造函数比较方便。
public class MyClass
{
static MyClass()
{
}
}
注意:静态构造函数没有访问修饰符,不能带任何参数,一个类只能有一个静态构造函数,只能访问类的静态成员(常量也是静态成员)他只是在第一次加载类的时候被调用。
C#中变量和常量:点击打开链接
如下所示:下面一个类有一个只读属性Day(只有get,没有set) 和一个静态构造函数,在静态构造函数中初始化该属性,返回今天是周几。
public class StaticConstructor
{
// 只读属性(只有get没有set)
public static int Day{get;}
static StaticConstructor()
{
// DateTime 是system下的一个类,用来处理与时间相关,这里的Now是DateTime类的静态属性,用于返回本机时间(与你设定的日期时间一致)
DateTime now = DateTime.Now;
// DayOfWeek 属性返回一个DayOfWeek枚举值(0-6 分别对应 周日到周六)
Day = (int)now.DayOfWeek;
}
}
DateTime.Now 详细输出:点击打开链接
注意:静态构造函数与无参数的实例构造函数可以同时存在,尽管参数列表相同,但是静态构造函数是在第一次加载类的时候调用,而实例构造函数是在创建类的实例对象时调用,所以他们不会有冲突。