关于c#:为什么.NET 4中的BeforeFieldInit行为发生了变化?

Why did the BeforeFieldInit behavior change in .NET 4?

在C 4中,没有beforefieldinit标志的类型的行为已更改,因此现在类型初始值设定项可以在首次使用类的任何静态字段之前调用。

我的问题是为什么C/.NET团队改变了这种行为?主要原因是什么?你能举一个实际的例子说明这种改变有什么意义吗?


行为总是在文档的范围内——只是它在.NET 4中从渴望变为懒惰。

我怀疑JIT团队设法找到了一种让它懒惰而不受性能惩罚的方法…或者它可能有助于其他地方的性能。这可能只是.NET 4 clr与.NET 2 clr之间行为上的一个这样的变化…碰巧我注意到了,但我怀疑其他人也注意到了。我认为对于JIT团队来说,在文档化的保证范围内,按照他们认为合适的方式调整事情是完全合理的。

最后,如果这会使代码失败,那么您已经有了一个bug。