一尘不染

何时在C#中初始化静态变量?

c#

我想知道静态变量(在类中)何时出现在图片中(初始化)?是在实例构造函数首次调用之后还是在类加载之后?什么时候加载类?


阅读 735

收藏
2020-05-19

共1个答案

一尘不染

哦,那很复杂。这取决于是否beforefieldinit设置了标志,而标志(在C#中)又取决于是否有静态构造函数。更糟的是;在.NET 4中,
我相信 行为发生了变化,使其比以前更加“懒惰”。

坦白说,我不会在此处编写任何特定行为的代码。简单:只要您使用常规代码访问静态字段,它们就会在尝试使用它们之前进行初始化。

乔恩·斯基特(Jon
Skeet)在这里这里对此都有很好的记录

2020-05-19