我最近遇到了C#中的??
运算符。这个操作员做什么以及何时有人使用它?
示例:
string name = nameVariable ?? string.Empty;
答案 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。