1. Nullable<T>和T?
可以为 null 的类型可表示一个基础类型的所有值,还可以再表示一个 null 值。 可通过以下两种方式之一声明可为 null 的类型:
Nullable<T> variable 或 T? variable(c#的语法糖衣)。例如:
Nullable<int> a 与 int? a 等效,都表示声明一个可以为空值的整型变量a。
2. 运算符
可为 null 的类型还可使用预定义的一元运算符和二元运算符以及任何用于值类型的用户定义的运算符。 如果操作数为 null,则这些运算符将产生一个 null 值;否则,运算符使用所包含的值来计算结果。 例如:
int? a = 10; int? b = null; a++; // Increment by 1, now a is 11. a = a * 10; // Multiply by 10, now a is 110. a = a + b; // Add b, now a is null.将可为 null 的类型进行比较时,如果其中一个可以为 null 的类型的值为 null,而另一个为非 null,则除!=(不等于)外,所有比较的计算结果均为false。对两个都是null的变量进行相等比较时,结果返回true。
3. ??操作符
??运算符定义一个默认值,若将一个可为 null 的类型赋给不可为 null 的类型,则会返回该值。例如:
int? c = null; // d = c, unless c is null, in which case d = -1. int d = c ?? -1;