С# volatile и Nullable
Согласно документам: http://msdn.microsoft.com/en-us/library/x13ttww7.aspx:
К ссылочным типам можно применить ключевое слово volatile.
Итак, почему это незаконно использовать на Nullable<T>
.. ссылочном типе!
Обратите внимание, что мне действительно не нужна летучая семантика в поле Nullable<T>
, я случайно встретил эту ошибку и просто любопытно.
Ответы
Ответ 1
Nullable<T>
не является ссылочным типом. Это тип значения:
public struct Nullable<T>
where T : struct, new()
Обратите внимание на часть struct
.
Просто потому, что он имеет значение null
, не делает его ссылочным типом... это тип значения с нулевым значением. Подробнее см. Раздел 4.1.10 спецификации языка С# 4.
Ответ 2
Nullable - это тип значения, а не ссылочный тип.
См. http://msdn.microsoft.com/en-us/library/b3h38hb0.aspx для определения.