在C#中,双问号的作用是什么?


What does a double question mark do in C#?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicates:
?? Null Coalescing Operator --> What does coalescing mean?
What do two question marks together mean in C#?

我在这里找不到这个问题,所以我想我会问。在C中,双问号的作用是什么?

例子:

1
x = y ?? z;


这是一个空合并运算符。上述状态x的方法被赋予y的值,除非y为空,在这种情况下,它被赋予z的值。


如果不为空则使用y,否则使用z


维基百科:

它是空的coalesce运算符和它的简写:

1
x = (y != null ? y : z);

如果y为空,x将设置为z。


如果值Y为空,则分配值Z。

例如:

1
x = Person.Name ??"No Name";

如果名称为空,x将具有值"no name"


.NET Framework 2.0及更高版本允许空值为可以为空的值类型。

在这种情况下,它说如果它有某个值(即不为空),x等于y,否则等于z。


正如其他人所说,它是空合并运算符。

有关此的msdn信息:

http://msdn.microsoft.com/en-us/library/ms173224.aspx