“静态构造函数”典型应用于第一次使用类时的初始化工作,注意“第一次”,意思是它只执行一次。
有同学说了,类的初始化不是有构造函数嘛?我们回答:构造函数是每个实例被声明时都会执行的,它属于每一个实例,而静态构造函数却属于这个类本身。
比如,现在各大学校马上开学了,这有个学号问题,学校规定:2013年入学的学生的学号统一编为“13xxxx”。那么这个初始值13xxxx就是这个学生这个类群共有的一个牲,而并不是属于某一个学生;而学号、姓名等都是某个学生独有的属性。
根据静态构造函数只执行一次的特征,学校学生管理系统在某个配置文件里写了“130001”这个数字,学校管理系统一运行立马读取了这个数字,管理系统一看,噢,让我从130001开始编学号啊!
代码编写时,我们先来建一个学生类
class Student
{
//先建立这个类所有的一个属性:起始学号
private static int _startNumber;
//静态构造函数用于读取配置文件或数据库中所设的起始数字。
static Student()
{
_startNumber = 130001; //假设这里我们是从配置文件中读取的130001
} //学号字段
private int _code;
//学号属性
public int Code
{
get { return _code; }
set { _code = value; }
} //每次实例对象的时候学号自增1
public Student()
{
this._code=(_startNumber++);
}
我们实例两个学生试试:
class Program
{
static void Main(string[] args)
{
Student s1 = new Student();
Console.WriteLine(s1.Code); Student s2 = new Student();
Console.WriteLine(s2.Code);
}
}
结果:
130001
130002