当我宣布int
为可空的
int? i=null;
这里i
会成为引用类型吗?
答案 0 :(得分:129)
不,可空是一个结构。发生的事情是可以为空的结构有两个值:
int
为int?
,DateTime
为DateTime?
等。HasValue
是财产。)设置数据类型的值时,结构会将HasValue
更改为true。
答案 1 :(得分:24)
来自Nullable Types (C# Programming Guide):
Nullable类型是System.Nullable结构的实例。
和
可空类型表示可以赋值为null的值类型变量。您无法基于引用类型创建可空类型。 (引用类型已经支持null值。)
所以,不,他们不是引用类型。
答案 2 :(得分:12)
Nullable类型既不是值类型也不是引用类型。它们更像是值类型,但具有一些引用类型的属性。
当然,可以为空的类型可以设置为null
。此外,可空类型不能满足通用struct
约束。此外,当您设置HasValue
等于false
的可空类型时,您会获得null
指针而不是盒装可空类型(拆箱时存在类似情况)。
这些属性使可变类型成为非值类型,但它们肯定也不是引用类型。它们是他们自己特殊的可空值类型。
答案 3 :(得分:6)
不,Nullable类型实际上是一个结构。运行时将智能地为您设置空值,给出引用类型的外观,当它不是....
答案 4 :(得分:1)
Nullable类型不能是引用类型。
答案 5 :(得分:0)
您不需要将引用类型设置为可空类型,因为您可以在其位置传递null。