代码之家  ›  专栏  ›  技术社区  ›  brainimus user417509

这是什么意思??接线员怎么办[[副本]

c#
  •  4
  • brainimus user417509  · 技术社区  · 16 年前

    可能重复:
    What is the “??” operator for?

    我最近遇到了 ?? C#中的运算符。这个操作员是做什么的?什么时候会有人使用它?

    例子:

    string name = nameVariable ?? string.Empty;
    
    6 回复  |  直到 9 年前
        1
  •  10
  •   Lucas Jones    16 年前

    这个??运算符的基本意思是“或者如果为空, 废话

    string name = (nameVariable == null) ? string.Empty : nameVariable;
    

    如果你不熟悉语法,基本上是:

    string name;
    if (nameVariable == null)
        name = string.Empty;
    else
        name = nameVariable;
    
        2
  •  6
  •   Giorgi    16 年前

    它是一个 null-coalescing operator 如果左边的为空,它将是右边的部分。

    有趣的是,你甚至可以这样使用它:

    string temp = (first ?? second).Text
    

    如果“first”为空,它将返回“second”变量的Text属性。

        3
  •  3
  •   Dan Diplo    16 年前

    它有一个吸引人的标题 Null Coalescing Operator . 它所做的是计算一个表达式,如果表达式为null,它将返回右操作数,否则它将返回左操作数(即原始值)。

    string nameVariable = "Diplodocus";
    string name = nameVariable ?? string.Empty;
    // assigns name the value "Diplodocus"
    

    还有。。。

    string nameVariable = null;
    string name = nameVariable ?? string.Empty; 
    // assigns name the value String.Empty;
    

        4
  •  1
  •   Steve Danner    16 年前

    它相当于检查空值,如果第一个值为空,则将其设置为某个值。您的上述陈述相当于:

    string name = nameVariable == null ? string.Empty : nameVariable;
    
        5
  •  0
  •   Matt    16 年前

    这是一个空引用检查,如果nameVariable为空,它将返回一个空字符串。

        6
  •  0
  •   devio    16 年前

    表达式

    value1 ?? value2