“静态构造函数”典型应用于第一次使用类时的初始化工作,注意“第一次”,意思是它只执行一次。
有同学说了,类的初始化不是有构造函数嘛?我们回答:构造函数是每个实例被声明时都会执行的,它属于每一个实例,而静态构造函数却属于这个类本身。
比如,现在各大学校马上开学了,这有个学号问题,学校规定: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