写在前面的话函数
对于构造函数,咱们都很熟悉,用于在实例化类的时候,使用new关键字,new出一个实例来供使用。spa
那么对于静态构造函数,充当的是什么角色呢,它和非静态构造函数有什么区别呢?它又有什么好处呢?日志
描述继承
静态构造函数用于初始化任何静态数据(静态方法里只能引用静态字段,静态构造函数也属于静态方法的一种)。编译器
静态构造方法在建立第一个实例或引用类的静态变量以前,会自动调用静态构造函数。string
特色:编译
1.静态构造函数没有修饰符,也没有参数class
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() { } }
注意:
若是有子类继承自带静态构造方法的类时,子类必须有空构造函数,不然会报错。