当这段代码完成时,结果是myObject
什么?
object myObject = "something";
object yourObject = null;
myObject = null ?? yourObject;
当这段代码完成时,结果是myObject
什么?
object myObject = "something";
object yourObject = null;
myObject = null ?? yourObject;
myObject 将为空
这被翻译成 -
if (null == null)
myObject = yourObject;
else
myObject = null;
合并运算符转换为:
x ?? y
x != null ? x : y
因此你有什么:
myObject = null != null ? null : yourObject;
这实际上是毫无意义的,因为 null 将始终为 null。
只是为了好玩,这里有一张小桌子:
一种 ??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。