只需阅读MSDN page关于新.NET 4.0
功能SpinLock的内容,并且无法理解以下声明背后的想法:
不要将SpinLock实例存储在只读字段中。
我的感觉是,这在某种程度上与价值类型细节有关,但不确定究竟是什么以及为何如此。任何人都可以为这一点带来更多亮点吗?
答案 0 :(得分:14)
底层问题是,当您在其上调用非静态方法并在副本上执行该方法时,C#编译器会创建readonly
值类型字段的副本 - 因为方法可以< / em>具有更改结构值的副作用 - readonly
字段不允许这样做。
有关进一步说明,请参阅"Mutating Readonly Structs"。