C#中的双问号有啥作用? [复制]

Posted

技术标签:

【中文标题】C#中的双问号有啥作用? [复制]【英文标题】:What does a double question mark do in C#? [duplicate]C#中的双问号有什么作用? [复制] 【发布时间】:2010-12-09 03:41:35 【问题描述】:

可能的重复:?? Null Coalescing Operator --> What does coalescing mean?What do two question marks together mean in C#?

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

例子:

x = y ?? z;

【问题讨论】:

这已经被问过几次了:***.com/questions/1064074/operator-in-c***.com/questions/446835/… ***.com/questions/827454 它让你,以及在话题结束之前回答的每个人,都获得了很多代表 :) [它总是让我惊讶的是 null 合并问题和答案在这里获得代表的速度有多快...] 是的,我以为我会赚大钱,但我脑子有问题,记不住该当的行话。呸。 【参考方案1】:

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

【讨论】:

【参考方案2】:

来自Wikipedia:

它是 null-coalesce 运算符和它的简写:

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

【讨论】:

【参考方案3】:

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

【讨论】:

【参考方案4】:

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

例如:

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

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

【讨论】:

【参考方案5】:

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

【讨论】:

【参考方案6】:

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

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

【讨论】:

【参考方案7】:

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

有关此的 MSDN 信息:

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

【讨论】:

以上是关于C#中的双问号有啥作用? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

什么是 ?? Dart 中的双问号?

c#中的?是什么意思

一元问号 (?) 运算符有啥作用?

$User?.name中问号有啥意义

为啥问号在 %% 内不起作用? [复制]

C# 中2个问号的作用。C#的??代表是什么意思