代码之家  ›  专栏  ›  技术社区  ›  badmaash

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

  •  23
  • badmaash  · 技术社区  · 15 年前

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

    3 回复  |  直到 10 年前
        1
  •  31
  •   David Gardiner    11 年前

    哦,这很复杂。这取决于 beforefieldinit 设置了标志,这反过来(在C中)取决于是否有静态构造函数。更糟的是,在.NET 4中 我相信 这种行为改变了,使它比以前更“懒惰”。

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

    乔恩·斯基特对此有一个很好的描述 here here

        2
  •  0
  •   traveller    10 年前

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

        3
  •  -6
  •   Gintautas Miliauskas    15 年前

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

    推荐文章