为什么应该尽可能避免在静态构造函数中初始化静态字段?
💡
原文中文,约3800字,阅读约需9分钟。
📝
内容提要
C#默认开启了代码分析规则CA1810,推荐内联初始化静态字段。本文比较了内联和静态构造函数初始化的性能差异,介绍了beforefieldinit标记和静态构造函数的执行时机。还讨论了在结构体中定义静态构造函数和使用default关键字得到默认结构体的情况下的行为。最后,介绍了如何使用RuntimeHelpers.RunClassConstructor方法来显式调用静态构造函数。
🎯
关键要点
-
C#默认开启代码分析规则CA1810,推荐以内联方式初始化静态字段。
-
比较了内联初始化和静态构造函数初始化的性能差异。
-
静态构造函数的执行时机与beforefieldinit标记有关。
-
在结构体中定义静态构造函数时,构造函数会在调用之前自动执行。
-
使用default关键字得到的默认结构体不会执行显式定义的静态构造函数。
-
可以使用RuntimeHelpers.RunClassConstructor方法显式调用静态构造函数。
➡️