【发布时间】:2008-12-28 16:55:16
【问题描述】:
我有一个引用类型变量readonly,因为引用永远不会改变,只会改变它的属性。当我尝试将volatile 修饰符添加到它时,编译器警告我它不会让两个修饰符都应用于同一个变量。但我认为我需要它是易变的,因为我不想在读取它的属性时遇到缓存问题。我错过了什么吗?还是编译器出错了?
更新 正如 Martin 在以下 cmets 之一中所述:对于引用类型的对象,readonly 和 volatile 修饰符都仅适用于引用,而不适用于对象的属性。这就是我所缺少的,所以编译器是对的。
class C
{
readonly volatile string s; // error CS0678: 'C.s': a field cannot be both volatile and readonly
}
【问题讨论】:
-
编译器是potentially wrong(尽管可能不适用于您的特定场景)。
标签: c# .net multithreading readonly volatile