在C#中,双重问号是做什么的?

可能重复:
?? 空合并运算符 – >合并意味着什么?
在C#中,两个问号在一起意味着什么?

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

例:

x = y ?? z; 

这是一个空合并运算符。 上面的方法状态x被分配了y的值,除非y是空的,在这种情况下它被分配了z的值。

如果不是null,则使用y,否则使用z

维基百科 :

这是空合并操作符和简写:

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

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

如果值为空,则赋值z。

例如:

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

如果名称为空,则x将具有值“No Name”

正如其他人所说,这是一个无效的合并运营商。

有关此MSDN信息:

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

.Net框架2.0向前允许空值为可空值types。

在这种情况下,它表示x等于y,如果它有一些值(即非空)或者等于z