什么< ??>

What does <??> symbol mean in C#.NET?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
What is the “??” operator for?

我看到一行代码-

1
return (str ?? string.Empty).Replace(txtFind.Text, txtReplace.Text);

我想知道这一行的确切含义(即??部分)。


它是空合并运算符:如果第一个参数非空,则返回第一个参数,否则返回第二个参数。在您的示例中,str ?? string.Empty基本上用于将空字符串交换为空字符串。

对于可以为空的类型尤其有用,因为它允许指定默认值:

1
2
int? nullableInt = GetNullableInt();
int normalInt = nullableInt ?? 0;

编辑:可以用条件运算符将str ?? string.Empty改写为str != null ? str : string.Empty。如果没有条件运算符,则必须使用更详细的if语句,例如:

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;