什么时候静态变量在C#中初始化?

时间:2010-10-19 06:56:00

标签: c# static

我想知道静态变量(在一个类中)什么时候进入图片(初始化)?它是在第一次调用实例构造函数之后还是在类加载之后? 何时进行类加载?

3 个答案:

答案 0 :(得分:31)

哦,这很复杂。这取决于是否设置了beforefieldinit标志,而后者(在C#中)依赖于是否存在静态构造函数。更糟糕的是;在.NET 4 我相信行为已经改变,使其比以前更加“懒惰”。

坦率地说,我不会在这里对任何具体行为进行编码;简单地说:静态字段将在您尝试使用之前初始化,只要您使用常规代码来访问它们。

Jon Skeet对此herehere

有好的评论

答案 1 :(得分:0)

静态变量在相应的类加载后出现。 它不是在构造函数调用之后,因为构造函数调用在我们使用new运算符创建类的对象时起作用,而静态变量在类级别而不是在对象级别上可用。

答案 2 :(得分:-6)

它可能取决于编程语言和环境,但通常在类加载时初始化静态变量。