我想知道静态变量(在一个类中)什么时候进入图片(初始化)?它是在第一次调用实例构造函数之后还是在类加载之后? 何时进行类加载?
答案 0 :(得分:31)
哦,这很复杂。这取决于是否设置了beforefieldinit
标志,而后者(在C#中)依赖于是否存在静态构造函数。更糟糕的是;在.NET 4 我相信行为已经改变,使其比以前更加“懒惰”。
坦率地说,我不会在这里对任何具体行为进行编码;简单地说:静态字段将在您尝试使用之前初始化,只要您使用常规代码来访问它们。
有好的评论答案 1 :(得分:0)
静态变量在相应的类加载后出现。 它不是在构造函数调用之后,因为构造函数调用在我们使用new运算符创建类的对象时起作用,而静态变量在类级别而不是在对象级别上可用。
答案 2 :(得分:-6)
它可能取决于编程语言和环境,但通常在类加载时初始化静态变量。