?? 运算符定义在将可空类型分配给非可空类型时返回的默认值。
int? c = null;
//若 c 为 null,则 d 为 -1,否则把 c 值赋予 d
int d = c ?? -1;
//若 c 为 null,则 d 为 -1,否则把 c 值赋予 d
int d = c ?? -1;
类型名称后加问号,如:
int? i = null;
double? d = null;
bool? b = null;
double? d = null;
bool? b = null;
可指定可为 null 的 int、double、bool 等类型。
或者用 Nullable,和上述方法等价,如:
Nullable<int> i = null;
上述类型不能是引用类型。
可空类型的每个实例都具有两个公共的只读属性:HasValue 和 Value,示例:
int? x = 10;
if (x.HasValue) /* 或者 x != null */
{
System.Console.WriteLine(x.Value);
}
else
{
System.Console.WriteLine("Undefined");
}
if (x.HasValue) /* 或者 x != null */
{
System.Console.WriteLine(x.Value);
}
else
{
System.Console.WriteLine("Undefined");
}