此代码完成后,myObject
的结果是什么?
object myObject = "something";
object yourObject = null;
myObject = null ?? yourObject;
答案 0 :(得分:2)
myObject将为null
这会转换为 -
if (null == null)
myObject = yourObject;
else
myObject = null;
答案 1 :(得分:1)
coalesce运算符转换为:
x ?? y
x != null ? x : y
因此你有什么:
myObject = null != null ? null : yourObject;
实际上这是毫无意义的,因为null总是为空。
答案 2 :(得分:1)
只是为了踢,这是一张小桌子:
A ?? B -> R --------------------- a ?? any -> a; where a is not-null null ?? b -> b; for any b null ?? null -> null; implied from previous
由于??
只是一个(惊喜!)权利相关的中缀运营商,x ?? y ?? z
- > x ?? (y ?? z)
。与&&
和||
一样,??
也是一种短路操作。
...来自?? Operator (C# Reference):
如果它不为空,它(??)返回左侧操作数;否则返回正确的操作数。
...来自C#3.0语言参考:
形式为a ??的空合并表达式b要求a为可空类型或引用类型。如果a是非null,则结果为?? b是一个;否则,结果是b。仅当a为null时,操作才会计算b。