写在前面的话
对于构造函数,我们都很熟悉,用于在实例化类的时候,使用new关键字,new出一个实例来供使用。
那么对于静态构造函数,充当的是什么角色呢,它和非静态构造函数有什么区别呢?它又有什么好处呢?
描述
静态构造函数用于初始化任何静态数据(静态方法里只能引用静态字段,静态构造函数也属于静态方法的一种)。
静态构造方法在创建第一个实例或引用类的静态变量之前,会自动调用静态构造函数。
特点:
1.静态构造函数没有修饰符,也没有参数
2.静态构造方法无法继承,且无法手动调用
3.无参数的静态构造函数可以和无参数的非静态函数共存(尽管方法前面相同,但是一个属于类,一个属于实例)
4.如果类中含有带初始值的静态成员,那么编译器会生成默认的静态构造函数
典型应用:
当类使用日志文件时,可以使用这种构造函数,向其中写入日志。
示例:
public class Person { static string name = "张三"; static Person() { /* * 如果注释下面的话 * 则GetName方法返回 张三 * 否则返回 李四 */ name = "李四"; } public string GetName() { return Person.name; } }
我们来新建一个Student类,让它继承自Person类,看看GetName方法会出现得到什么呢?
public class Student : Person { }此时,GetName方法获取的值仍然是 李四。此代码等同于:public class Student : Person { public Student() : base() { } }
注意:
如果有子类继承自带静态构造方法的类时,子类必须有空构造函数,否则会报错。