在 C# 4 中,没有 beforefieldinit
标志的类型的行为已更改,因此现在可以在首次使用类的任何静态字段之前调用类型初始值设定项。
我的问题是为什么 C#/.NET 团队改变了这种行为?主要原因是什么?你能举出任何实际的例子来证明这种变化是有意义的吗?
最佳答案
行为一直在记录的范围内 - 只是它在 .NET 4 中从急切变为懒惰。
我怀疑 JIT 团队设法找到了一种方法让它变得懒惰而不影响性能......或者它可能有助于其他地方的性能。这可能只是 .NET 4 CLR 与 .NET 2 CLR 中的一个这种行为变化...我碰巧注意到了它,但我怀疑其他人是否注意到了。我认为 JIT 团队在记录的保证范围内按他们认为合适的方式进行调整是完全合理的。
最终,如果这使您的代码失败,那么您已经遇到了错误。
关于c# - 为什么 BeforeFieldInit 行为在 .NET 4 中发生了变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6729841/