什么?操作员呢?

时间:2010-08-04 18:54:24

标签: c#

  

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

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

示例:

string name = nameVariable ?? string.Empty;

6 个答案:

答案 0 :(得分:10)

?? operator基本上是指“或者如果它为null, blah ”。它相当于:

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

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

string name;
if (nameVariable == null)
    name = string.Empty;
else
    name = nameVariable;

答案 1 :(得分:6)

它是null-coalescing operator如果左边的那个是空的,它将是正确的部分。

有趣的事实是你甚至可以像这样使用它:

string temp = (first ?? second).Text

如果'first'为null,它将返回'second'变量的Text属性。

答案 2 :(得分:3)

它有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;

请注意,您可以将它与任何引用或可空类型一起使用,而不仅仅是字符串。

答案 3 :(得分:1)

它等同于检查null并将值设置为第一个值。您上面的陈述相当于:

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

表达式

value1 ?? value2
如果value1是一个不同于null的值,

返回value1,如果value1等于null,则返回value2。