.net中的静态变量分配时间

Kir*_*ran 3 c#

当分配静态变量时,即在声明类时或在创建对象时?

Teu*_*n D 6

它被编译成静态构造函数.因此,任何人第一次创建类的对象或在其上调用静态方法或属性时,都会发生初始化.

编辑:如果在您自己的静态构造函数代码之后发生初始化(以及其他一些边缘情况),那么对您来说很重要,请检查divo中注释中的链接.

  • 它并不那么简单.Jon Skeet有一篇关于它的综合文章,请参阅http://www.yoda.arachsys.com/csharp/beforefieldinit.html.在没有静态构造函数的类中,类型初始值设定项可能在加载程序集时执行,或者在执行类型上的静态方法时运行,或者甚至仅在访问类型的第一个字段时运行. (6认同)