是可空types的引用types?
当我声明一个int
可为空
int? i=null;
i
在这里成为一个参考types?
不,可以为空结构。 发生什么事是可空结构有两个值:
- 数据types的值(
int
为int?
,DateTime
为DateTime?
等)。 - 一个布尔值,告诉数据types值是否已经设置。 (
HasValue
是属性。)
当您设置数据types的值时,结构将HasValue
更改为true。
什么是可空的
从可空types(C#编程指南) :
可空types是System.Nullable结构的实例。
和
可为空的types表示可以赋值为null的值typesvariables。 您不能根据引用types创build可为空的types。 (引用types已经支持空值。)
所以,不,他们不是引用types。
可为空的types既不是值types也不是引用types。 它们更像是值types,但具有一些引用types的属性。
当然,可以将空types设置为null
。 此外,可空types不能满足通用的struct
约束。 此外,当您将HasValue
为false
的可空types时,您将获得一个null
指针,而不是一个可装箱的可空types(与拆箱相似的情况)。
这些属性使可空types为非值types,但它们确实也不是引用types。 它们是它们自己特殊的可空值types。
不,Nullabletypes实际上是一个结构体。 运行时会智能地为您处理一个空值的设置,给出一个引用types的外观,当它不是….
可为空的types不能是引用types。
您不需要将引用types设置为可为空的types,因为您可以在其中传递null。