在c# 4中,没有beforefieldinit
标志的类型的行为被改变了,所以现在类型初始化器可以在第一次使用类的任何静态字段之前调用。
我的问题是为什么c#/。. NET团队改变了这种行为?主要原因是什么?你能举一些实际的例子说明这种改变是有意义的吗?
该行为一直在文档的范围内 -只是它在。net 4中从渴望变为懒惰。
我怀疑 JIT团队设法找到了一种方法,使它变得懒惰而不损失性能…或者它可能在其他地方帮助提高性能。这很可能只是。net 4 CLR和。net 2 CLR中的一个行为变化…我碰巧注意到了,但我怀疑其他人是否注意到了。我认为JIT团队在文档保证的范围内调整他们认为合适的东西是完全合理的。
最终,如果这使你的代码失败,你已经有一个bug了。