C# 这是什么意思??接线员怎么办?
可能重复:C# 这是什么意思??接线员怎么办?,c#,C#,可能重复: 我最近在C#中遇到了?操作符。这个操作员做什么?什么时候有人会使用它 例如: string name = nameVariable ?? string.Empty; 这个??运算符的基本意思是“或者,如果它为null,则为空”。这相当于: string name = (nameVariable == null) ? string.Empty : nameVariable; string name = nameVariable == null ? string.Empty : n
我最近在C#中遇到了
?
操作符。这个操作员做什么?什么时候有人会使用它
例如:
string name = nameVariable ?? string.Empty;
这个??运算符的基本意思是“或者,如果它为null,则为空”。这相当于:
string name = (nameVariable == null) ? string.Empty : nameVariable;
string name = nameVariable == null ? string.Empty : nameVariable;
如果您不熟悉语法,基本上是:
string name;
if (nameVariable == null)
name = string.Empty;
else
name = nameVariable;
这相当于检查null并将值设置为某个值(如果第一个值为空)。您的上述陈述相当于:
string name = (nameVariable == null) ? string.Empty : nameVariable;
string name = nameVariable == null ? string.Empty : nameVariable;
这是一个空引用检查,如果nameVariable为空,它将返回一个空字符串。如果左侧为空,它将是一个右部分 有趣的是,你甚至可以这样使用它:
string temp = (first ?? second).Text
如果'first'为空,它将返回'second'变量的文本属性。表达式
value1 ?? value2
如果value1与null不同,则返回value1;如果value1等于null,则返回value2。它有一个吸引人的标题。它所做的是计算一个表达式,如果表达式为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;
注意,您可以将其用于任何引用或可空类型,而不仅仅是字符串。Man;要是人们发明语言时能把它们记录下来就好了。@jeff-去看看C#Operators页面,让我知道你的情况如何。编辑:显然C#Operators页面有多个版本。如果您导航到VS 2010上的特定版本,您可以找到它,否则它将不存在。@Mike M:或VS 2005版本。或者VS2008。null合并运算符是作为C#2的一部分引入的。@0xA3:我在发布之前进行了搜索。搜索“?运算符C#”时,不会显示您引用的问题。当我第一次搜索时,我没有意识到“?”正在从我的搜索条件中删除。@jon-是的,你赢了。我承认。然而,如果你只是谷歌C#operators,第一个结果并没有列出它。