What does the ?? operator do?
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
What is the “??” operator for?
我最近遇到了C中的
例子:
1 | string name = nameVariable ?? string.Empty; |
这个??运算符的基本意思是"如果它为空,则为blah"。相当于:
1 | string name = (nameVariable == null) ? string.Empty : nameVariable; |
如果您不熟悉语法,基本上是:
1 2 3 4 5 | string name; if (nameVariable == null) name = string.Empty; else name = nameVariable; |
它是一个空合并运算符,如果左边的为空,它将右分。
有趣的是,你甚至可以这样使用它:
1 | string temp = (first ?? second).Text |
如果"first"为空,它将返回"second"变量的文本属性。
它有一个容易上口的空合并运算符的标题。它的作用是计算表达式,如果表达式为空,则返回右侧操作数,否则返回左侧操作数(即原始值)。
以您的示例为基础,您将得到以下结果:
1 2 3 | string nameVariable ="Diplodocus"; string name = nameVariable ?? string.Empty; // assigns name the value"Diplodocus" |
还有…
1 2 3 | string nameVariable = null; string name = nameVariable ?? string.Empty; // assigns name the value String.Empty; |
注意,您可以将它用于任何引用或可以为空的类型,而不仅仅是字符串。
它相当于检查空值,如果第一个值为,则将值设置为某个值。你的上述陈述相当于:
1 | string name = nameVariable == null ? string.Empty : nameVariable; |
表达式
1 | value1 ?? value2 |
如果value1不是空值,则返回value1;如果value1等于空值,则返回value2。
它是一个空引用检查,如果名称变量为空,它将返回一个空字符串。