仅仅阅读MSDN页面中关于新.NET 4.0特性SpinLock的内容,就无法理解以下声明背后的想法:
不要在只读字段中存储SpinLock实例。
我的感觉是,这在某种程度上与价值类型的具体情况有关,但不确定具体的方法和原因。有人能给这点带来更多的启示吗?
发布于 2012-02-10 21:26:15
根本的问题是,C#编译器在调用非静态方法时会创建readonly值类型字段的副本,并在副本上执行该方法--因为该方法可能会产生改变结构值的副作用--这是readonly字段不允许的。
有关进一步的澄清,请参见“突变的只做准备的结构”。
https://stackoverflow.com/questions/9234910
复制相似问题