1 单问号 '?' 与双问号 '??'
1.1 单问号
单问号用于对 int、double、bool 等无法直接赋值为 Null 的数据类型进行 Null 的赋值。意思是这个数据类型时 Nullable 类型的。
int? a=3; //等价于Nullable<int> a=new Nullable<int>(3);
int i;//默认值为 0
int? ii;//默认值为 Null
1.2 双问号
双问号可用于判断一个变量为 Null 时返回一个指定的值。
int? a=null;
Console.WriteLine(a??3.14);
运行结果为:
3.14
2 可空类型
Nullable 类型(可空类型)可以表示其基础值类型正常范围的值再加上一个 null 值。
ex:Nullable<Int32> 读作 '可空的 Int32',可以被赋值为 -2147483648 到 2147483647 之间的任意值以及 null 值。
语法为:数据类型? 变量名=null;
3 Null 合并运算符
Null 合并运算符用于定义可空类型和引用类型的默认值。Null 合并运算符为类型转换定义了一个预设值,以防可空类型的值为 null。Null 合并运算是把操作数类型隐式转换为另一个可空或不可空的值类型的操作数类型。
执行过程为:若第一个操作数的值为 null,则返回第二个操作数的值。否则返回第一个操作数的值。ex:
double? num1=null;
double? num2=3.14157;
double num3;
num3=num1??5.34;
Console.WriteLine("num3的值为:{0}",num3);
num3=num2??5.34;
Console.WriteLine("num3的值为:{0}",num3);
运行结果为:
num3的值为:5.34
num3的值为:3.14157