Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 这是什么意思??接线员怎么办?_C# - Fatal编程技术网

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,第一个结果并没有列出它。