是什么 ”??” 运营商的?
这个问题在这里已经有了答案:
它被称为“空合并运算符”,其工作原理如下:
而不是:
int? number = null;
int result = number == null ? 0 : number;
你现在可以做:
int result = number ?? 0;
它是空合并运算符。 它是在C#2中引入的。
表达式a ?? b
的结果 如果那不是空的, a ?? b
是a
,否则b
。 除非需要,否则b
不会被评估。
两件好事:
表达式的整体类型是第二个操作数的类型,当您使用可为空的值类型时这很重要:
int? maybe = ...;
int definitely = maybe ?? 10;
(请注意,不能将不可为空的值类型用作第一个操作数 - 它毫无意义。)
关联性规则意味着您可以很容易地将其链接起来。 例如:
string address = shippingAddress ?? billingAddress ?? contactAddress;
这将使用运费,帐单或联系地址中的第一个非空值。
这是合并操作员。 它基本上是以下的简写
x ?? new Student();
x != null ? x : new Student();
有关运营商的MSDN文档