System.Nullable 类

本文提供了此 API 参考文档的补充说明。

Nullable 类支持可分配 null的值类型。

如果一个类型可以被赋值或者被赋为 null(表示类型完全没有值),那么我们称这种类型为可空类型。 默认情况下,所有引用类型(例如 String)都是可为 null 的,但所有值类型(例如 Int32)都不是。

在 C# 和 Visual Basic 中,通过在值类型后面使用 ? 语法,将值类型标记为可空。 例如, int? 在 C# 或 Integer? Visual Basic 中,声明可以分配 null的整数值类型。

Nullable 类为 Nullable<T> 结构提供补充支持。 Nullable 类支持获取可以为 Null 类型的基础类型,并支持那些基础值类型不支持泛型比较和相等运算的可以为 Null 类型对的比较和相等运算。

装箱和拆箱

当对可为 null 的类型进行装箱时,公共语言运行时会自动将 Nullable<T> 对象的基础值进行装箱,而不是 Nullable<T> 对象本身。 也就是说,如果 HasValue 属性为 true,则对 Value 属性的内容进行装箱。

如果可以为 null 类型的属性 HasValuefalse,则装箱操作的结果是 null。 当可以为 null 类型中的基础值被取消装箱时,公共语言运行时将创建一个以该基础值初始化的新 Nullable<T> 结构。