我不相信生成的代码会在每次访问静态成员(包括函数)时检查该类是否已初始化。我相信检查每一次访问都是低效的。我查看了 ECMA 334 中的 §17.11,它说



似乎没有定义如何确定“第一次”何时发生。我想不出任何办法,只能每次都检查。怎么做?

最佳答案

当你有一个问题要解决时,一个好的技巧是:解决一个更难的问题,这样你的小问题的解决方案就被更难的问题的解决方案解决了。

CLR 有一个更难解决的问题:它必须在第一次调用方法之前对每个方法只运行一次抖动。如果 CLR 可以解决这个问题,那么它显然可以解决检测静态 ctor 何时需要运行的相对微不足道的子问题。

也许您的问题应该是“抖动如何知道何时首次对方法进行 jit?”

关于c# - C# 如何知道何时运行静态构造函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9335628/

10-13 03:16