Null Coalescing Operator ??
的主要用途如下所示:
double? num1 = 3.14157;
double num2 = num1 ?? 5.34;
Console.WriteLine("Value of num2: {0}", num2);
答案 0 :(得分:7)
“
??
运算符被称为null-coalescing运算符,用于为可空值类型或引用类型定义默认值。如果操作数不为null,则返回左侧操作数;否则返回返回正确的操作数。“
来源:MSDN
答案 1 :(得分:3)
Null coalesce运算符允许您更简洁地编写代码:而不是使用条件语句或条件表达式,您可以在一行中编写等效表达式。
将您的表情与此
进行比较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;
VS
int? tmpNum1 = getNum1();
num2 = num1.HasValue ? (double)num1.Value : 5.34;
答案 2 :(得分:1)
我通常在第一次请求时使用它来创建对象:
public ICommand OkCmd
{
get { return _okCmd ?? (_okCmd = new DelegateCommand(Ok)); }
}
private DelegateCommand _okCmd;