我想知道静态变量(在类中)何时出现在图片中(初始化)?是在实例构造函数首次调用之后还是在类加载之后?什么时候加载类?
哦,那很复杂。这取决于是否beforefieldinit设置了标志,而标志(在C#中)又取决于是否有静态构造函数。更糟的是;在.NET 4中, 我相信 行为发生了变化,使其比以前更加“懒惰”。
beforefieldinit
坦白说,我不会在此处编写任何特定行为的代码。简单:只要您使用常规代码访问静态字段,它们就会在尝试使用它们之前进行初始化。
乔恩·斯基特(Jon Skeet)在这里和这里对此都有很好的记录