我和一个 friend 辩论,他说静态构造函数可以让位给竞争条件,因为静态构造函数可以被多次调用。看来这只能在大容量多线程环境中发生。那有可能吗?
我找不到任何文件证明他错了。有人对此有见识吗?
谢谢!
最佳答案
静态构造函数每个AppDomain仅被调用一次。
ECMA-335指出,CLI必须保证:
而且我还没有听说过在C#中调用类型初始值设定项的便捷方法。
如果在类型初始值设定项之间创建循环依赖项,则可能会遇到问题。
有关此问题的有趣文章,请参见此处:
https://msmvps.com/blogs/jon_skeet/archive/2012/04/07/type-initializer-circular-dependencies.aspx)
关于c# - C#静态构造函数中的竞争条件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10096776/