关于c#:什么?


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。


它是一个空引用检查,如果名称变量为空,它将返回一个空字符串。