What does <??> symbol mean in C#.NET?
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
What is the “??” operator for?
我看到一行代码-
1 | return (str ?? string.Empty).Replace(txtFind.Text, txtReplace.Text); |
我想知道这一行的确切含义(即
它是空合并运算符:如果第一个参数非空,则返回第一个参数,否则返回第二个参数。在您的示例中,
对于可以为空的类型尤其有用,因为它允许指定默认值:
1 2 | int? nullableInt = GetNullableInt(); int normalInt = nullableInt ?? 0; |
编辑:可以用条件运算符将
1 2 3 4 5 6 | if (str == null) { str = string.Empty; } return str.Replace(txtFind.Text, txtReplace.Text); |
它被称为空合并运算符。它允许您有条件地从链中选择第一个非空值:
1 2 3 | string name = null; string nickname = GetNickname(); // might return null string result = name ?? nickname ??"<default>"; |
如果不为空,则EDOCX1中的值(0)将为EDOCX1的值(1),或者EDOCX1中的值(2)。
它相当于
1 | (str == null ? string.Empty : str) |
这个??运算符表示返回非空值。因此,如果您有以下代码:
1 2 3 | string firstName = null; string personName = firstName ??"John Doe"; |
上述代码将返回"john doe",因为firstname值为空。
就是这样!
1 | str ?? String.Empty |
可以写为:
1 2 3 4 5 | if (str == null) { return String.Empty; } else { return str; } |
或作为三元陈述:
1 | str == null ? str : String.Empty; |