我有一个引用类型的变量,即readonly
,因为引用永远不会改变,只有它的属性。当我试图将volatile
修饰符添加到它时,编译警告我不会让这两个修饰符应用于相同的变量。但我认为我需要它是不稳定的,因为我不想在阅读它的属性时发生缓存问题。我错过了什么?还是编译器错了?为什么readonly和volatile修饰符是互斥的?
更新正如马丁在下面的注释之一中所述:readonly和volatile修饰符只应用于引用,而不适用于引用类型对象的对象属性。这就是我所错过的,所以编译器是正确的。
class C
{
readonly volatile string s; // error CS0678: 'C.s': a field cannot be both volatile and readonly
}
编译器[潜在错误](http://stackoverflow.com/q/39004125/1149773)(尽管可能不适用于您的特定场景)。 – Douglas 2016-08-17 19:37:11