为什么应该尽可能避免在静态构造函数中初始化静态字段?

💡 原文中文,约3800字,阅读约需9分钟。
📝

内容提要

C#默认开启了代码分析规则CA1810,推荐内联初始化静态字段。本文比较了内联和静态构造函数初始化的性能差异,介绍了beforefieldinit标记和静态构造函数的执行时机。还讨论了在结构体中定义静态构造函数和使用default关键字得到默认结构体的情况下的行为。最后,介绍了如何使用RuntimeHelpers.RunClassConstructor方法来显式调用静态构造函数。

🎯

关键要点

  • C#默认开启代码分析规则CA1810,推荐以内联方式初始化静态字段。

  • 比较了内联初始化和静态构造函数初始化的性能差异。

  • 静态构造函数的执行时机与beforefieldinit标记有关。

  • 在结构体中定义静态构造函数时,构造函数会在调用之前自动执行。

  • 使用default关键字得到的默认结构体不会执行显式定义的静态构造函数。

  • 可以使用RuntimeHelpers.RunClassConstructor方法显式调用静态构造函数。

➡️

继续阅读