C#volatile和Nullable

根据文档: http : //msdn.microsoft.com/en-us/library/x13ttww7.aspx :

volatile关键字可以应用于引用类型。

那么为什么在Nullable上使用它是非法的参考类型!

请注意,我实际上并不需要在Nullable字段上使用volatile语义,我偶然遇到了这个错误并且只是好奇。

Nullable不是引用类型。 这是一种价值类型:

 public struct Nullable where T : struct, new() 

注意struct部分。

仅因为它具有null值不会使其成为引用类型…它是可以为null的类型。 有关详细信息,请参阅C#4语言规范的4.1.10节。

Nullable是值类型,而不是引用类型。

有关定义,请参见http://msdn.microsoft.com/en-us/library/b3h38hb0.aspx 。