是可空types的引用types?

当我声明一个int可为空

 int? i=null; 

i在这里成为一个参考types?

不,可以为空结构。 发生什么事是可空结构有两个值:

  1. 数据types的值( intint?DateTimeDateTime?等)。
  2. 一个布尔值,告诉数据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约束。 此外,当您将HasValuefalse的可空types时,您将获得一个null指针,而不是一个可装箱的可空types(与拆箱相似的情况)。

这些属性使可空types为非值types,但它们确实也不是引用types。 它们是它们自己特殊的可空值types。

不,Nullabletypes实际上是一个结构体。 运行时会智能地为您处理一个空值的设置,给出一个引用types的外观,当它不是….

可为空的types不能是引用types。

http://msdn.microsoft.com/en-us/library/2cf62fcy.aspx

您不需要将引用types设置为可为空的types,因为您可以在其中传递null。