在最近的开发过程中,经常需要静态字段记录一些公共常量,如果我们需要读取配置文件(比如yaml文件)然后赋值给静态字段或者属性。此时就需要用到静态构造函数来对静态属性初始化。那么静态构造函数是什么时候被调用呢?
- 静态构造函数的特点
- 可以用来初始化任何静态的数据
- 最多只会执行一次
- 执行过程中,出现异常将不会重复执行
- 一个类有且只有一个静态构造函数
- 静态构造函数不能使用修饰符,不能带有参数
- 静态构造函数的逻辑是线程安全的,无需加锁
- 静态类不能被继承,静态类是密封的
- 静态构造函数的执行时机
静态构造函数是由CLR调用的,调用的时机是当静态类的成员变量被使用的时候。
运行结果:
从运行结果看,静态构造函数在成员变量被使用前初始化,并且只会执行一次
- 静态构造函数的执行顺序
- 静态字段初始化(默认值)
- 基类静态字段初始化
- 基类构造函数运行
- 静态构造函数运行
参考文档:https://learn.microsoft.com/zh-cn/dotnet/csharp/programming-guide/classes-and-structs/static-constructors