-1

Null Coalescing Operator 的主要用途是什么,??如下所示:

double? num1 = 3.14157;
double num2 = num1 ?? 5.34;      
Console.WriteLine("Value of num2: {0}", num2);
4

3 回答 3

7

“该??运算符称为空合并运算符,用于为可空值类型或引用类型定义默认值。如果操作数不为空,则返回左侧操作数;否则返回右侧操作数。”

资料来源:MSDN

于 2013-07-01T18:25:12.400 回答
3

空合并运算符使您可以更简洁地编写代码:您可以在一行中编写等效的表达式,而不是使用条件语句或条件表达式。

将您的表达与此进行比较

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;
于 2013-07-01T18:25:53.000 回答
1

我通常在第一次请求对象时使用它来创建对象:

public ICommand OkCmd
{
    get { return _okCmd ?? (_okCmd = new DelegateCommand(Ok)); }
}
private DelegateCommand _okCmd;
于 2013-07-01T18:35:54.557 回答