📜  “??”在 C# 中(1)

📅  最后修改于: 2023-12-03 14:48:44.150000             🧑  作者: Mango

“??”在 C# 中

在 C# 中,“??”是一个空合并运算符,用于在将一个值赋值给一个变量时处理空值情况。

用法

语法:var result = expr1 ?? expr2;

如果 expr1 不为 null,则 result 的值为 expr1 的值,否则 result 的值为 expr2 的值。

string firstName = null;
string lastName = "Doe";
string fullName = firstName ?? lastName;
Console.WriteLine(fullName); // 输出 "Doe"

在上面的例子中,由于 firstNamenull,所以 fullName 的值为 lastName 的值。

除了对单个变量进行空值处理,还可以对方法的返回值进行空值处理。

string result = GetValue() ?? "default value";
注意点
  1. 空合并运算符只对左侧表达式进行空值检查,如果左侧表达式不为空,则不会执行右侧表达式。如果左侧表达式为空,则会执行右侧表达式,并将其赋值给变量。
string firstName = null;
string lastName = "Doe";
string fullName = firstName ?? lastName.ToUpper();
Console.WriteLine(fullName); // 输出 "DOE"

在上面的例子中,虽然 firstNamenull,但由于 lastName 不为空,所以 fullName 的值为 lastName 的大写形式。

  1. 空合并运算符只能用于可空类型和引用类型,不能用于值类型。
int? num1 = null;
int num2 = 0;
int result = num1 ?? num2; // 合法

int num3 = 1;
int num4 = num3 ?? 2;      // 不合法
结论

空合并运算符(“??”)是 C# 中的一个非常方便的工具,能够极大地简化代码,处理空值情况。当你需要进行空值处理时,一定要记得使用空合并运算符。