??的目的是什么? C#中的运算符?

时间:2013-07-01 18:23:22

标签: c# .net

Null Coalescing Operator ??的主要用途如下所示:

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

3 个答案:

答案 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;