代码之家  ›  专栏  ›  技术社区  ›  Brad

如果空合并操作中的所有参数都为空,结果如何?

  •  3
  • Brad  · 技术社区  · 14 年前

    myObject ?

    object myObject = "something";
    object yourObject = null;
    
    myObject = null ?? yourObject;
    
    3 回复  |  直到 14 年前
        1
  •  2
  •   Ed Guiness    14 年前

    myObject将为空

    这个被翻译成-

    if (null == null)
        myObject = yourObject;
    else
        myObject = null;
    
        2
  •  1
  •   Dismissile    14 年前

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

    因此,你所拥有的:

    myObject = null != null ? null : yourObject;
    

    这实际上是毫无意义的,因为null总是空的。

        3
  •  1
  •   user166390 user166390    14 年前

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

    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)

    是吗如果不为空,则返回左侧操作数;否则返回右侧操作数。

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