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