3

当这段代码完成时,结果是myObject什么?

object myObject = "something";
object yourObject = null;

myObject = null ?? yourObject;
4

3 回答 3

2

myObject 将为空

这被翻译成 -

if (null == null)
    myObject = yourObject;
else
    myObject = null;
于 2010-10-19T17:56:42.233 回答
1

合并运算符转换为:

x ?? y
x != null ? x : y

因此你有什么:

myObject = null != null ? null : yourObject;

这实际上是毫无意义的,因为 null 将始终为 null。

于 2010-10-19T18:03:14.283 回答
1

只是为了好玩,这里有一张小桌子:

一种 ??B -> R
---------------------
一种 ??任何->一个;其中 a 不为空
空值 ??b -> b; 对于任何 b
空值 ??空->空;从前面暗示

因为??只是一个(惊喜!)右关联中缀运算符x ?? y ?? z--> x ?? (y ?? z)。和一样&&,也是一种短路操作。||??

...从?? 运算符(C# 参考)

如果它不为空,它 (??) 返回左操作数;否则返回正确的操作数。

...来自 C# 3.0 语言参考:

a ?? 形式的空合并表达式 b 要求 a 是可空类型或引用类型。如果 a 不为空,则 a ?? 的结果 b是a;否则,结果为 b。仅当 a 为空时,该操作才计算 b。

于 2010-10-19T18:13:46.143 回答