Почему модификаторы readonly и volatile являются взаимоисключающими?
У меня есть переменная ссылочного типа, котораяreadonly
, потому что ссылка никогда не изменится, только ее свойства. Когда я попытался добавитьvolatile
модификатор к нему скомпилированный предупредил меня, что он не позволит использовать оба модификатора для одной и той же переменной. Но я думаю, что он должен быть нестабильным, потому что я не хочу проблем с кэшированием при чтении его свойств. Я что-то упустил? Или компилятор не так?
Обновить Как сказал Мартин в одном из комментариев ниже: модификаторы readonly и volatile применяются только к ссылке, а не к свойствам объекта, в случае объектов ссылочного типа. Вот чего мне не хватало, так что компилятор прав.
class C
{
readonly volatile string s; // error CS0678: 'C.s': a field cannot be both volatile and readonly
}