我有一个引用类型的变量,它是只读的,因为引用从不改变,只有它的属性会改变。当我尝试给它添加volatile修饰符时,编译器警告我不能让两个修饰符应用于同一个变量。但我认为我需要它是volatile的,因为我不想在读取其属性时出现缓存问题。我错过了什么吗?还是编译器错了?
更新:如Martin在下面的评论中所述:对于引用类型对象,只读和volatile修饰符仅适用于引用,而不适用于对象的属性。这就是我错过的,所以编译器是正确的。
更新:如Martin在下面的评论中所述:对于引用类型对象,只读和volatile修饰符仅适用于引用,而不适用于对象的属性。这就是我错过的,所以编译器是正确的。
class C
{
readonly volatile string s; // error CS0678: 'C.s': a field cannot be both volatile and readonly
}