С# 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.