当我声明一个 int为空时
int
int? i=null;
这里的 i是否成为引用类型?
i
不,可空结构是结构,它有两个值:
int?
DateTime
DateTime?
HasValue
设置数据类型的值时,结构将 HasValue更改为 true。
可空类型(C # 编程指南)
不,Nullable 类型实际上是一个 struct。运行时将智能地为您处理空值的设置,在引用类型不是... ... 时,提供引用类型的外观。
可空类型不能是引用类型。
Http://msdn.microsoft.com/en-us/library/2cf62fcy.aspx
来自 可空类型(C # 编程指南):
可空类型是 System.Nullable 结构的实例。
还有
可空类型表示可以赋值为 null 的值的值类型变量。不能基于引用类型创建可空类型。(引用类型已经支持空值。)
所以,它们不是引用类型。
您不需要将引用类型设置为可空类型,因为您可以在其位置传递 null。
可空类型既不是值类型,也不是引用类型。它们更类似于值类型,但具有一些引用类型的属性。
当然,可空类型可以设置为 null。此外,可空类型不能满足通用 struct约束。此外,当您用 HasValue等于 false的可空类型装箱时,您将得到一个 null指针,而不是一个装箱的可空类型(拆箱时也存在类似的情况)。
null
struct
false
这些属性使可空类型成为非值类型,但它们肯定也不是引用类型。它们是自己的特殊可空值类型。