Null Coalescing Operator 的主要用途是什么,??
如下所示:
double? num1 = 3.14157;
double num2 = num1 ?? 5.34;
Console.WriteLine("Value of num2: {0}", num2);
“该
??
运算符称为空合并运算符,用于为可空值类型或引用类型定义默认值。如果操作数不为空,则返回左侧操作数;否则返回右侧操作数。”
资料来源:MSDN
空合并运算符使您可以更简洁地编写代码:您可以在一行中编写等效的表达式,而不是使用条件语句或条件表达式。
将您的表达与此进行比较
if (num1.HasValue) {
num2 = num1.Value;
} else {
num2 = 5.34;
}
这个
num2 = num1.HasValue ? (double)num1.Value : 5.34;
或这个:
num2 = num1 != null ? (double)num1 : 5.34;
你的表达比上述任何一个都更容易阅读。
此外,此运算符可让您避免引入临时变量,甚至在num1
不在变量中而是来自函数的情况下为您节省函数调用:
double num2 = getNum1() ?? 5.34;
对比
int? tmpNum1 = getNum1();
num2 = num1.HasValue ? (double)num1.Value : 5.34;
我通常在第一次请求对象时使用它来创建对象:
public ICommand OkCmd
{
get { return _okCmd ?? (_okCmd = new DelegateCommand(Ok)); }
}
private DelegateCommand _okCmd;