78

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

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

例子:

x = y ?? z;
4

7 回答 7

91

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

于 2009-10-22T15:51:59.650 回答
25

来自维基百科

这是 null-coalesce 运算符和简写:

x = (y != null ? y : z);
于 2009-10-22T15:53:14.083 回答
19

y不使用就使用null,否则使用z

于 2009-10-22T15:51:43.433 回答
10

如果 a 的值 y 为空,则分配值 z。

例如:

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

如果 name 为 null x 将具有值“No Name”

于 2009-10-22T15:52:28.733 回答
8

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

于 2009-10-22T15:51:36.443 回答
1

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

有关此的 MSDN 信息:

https://docs.microsoft.com/dotnet/csharp/language-reference/operators/null-coalescing-operator

于 2009-10-22T15:53:42.860 回答
1

.Net framework 2.0 及更高版本允许 Null 值类型为 Nullable 值类型。

在这种情况下,如果 x 有某个值(即非空),则表示 x 等于 y,否则等于 z

于 2009-10-22T15:54:17.227 回答