空合并运算符(??) 可以在处理可空类型和引用类型时表示 null 值的可能性。
这个运算符放在两个操作数之间, 第一个操作数必须是一个可空类型或引用类型, 第二个操作数必须与第一个操作数的类型相同,或者可以隐式地转换为第一个操作数的类型。
可空运算符的计算如下:
- 如果第一个操作数不是 null, 整个表达式就等于第一个操作数的值。
- 如果第一个操作数是 null, 整个表达式就等于 第二个操作数的值。
举个例子:
// 可空的值类型
string? name = null;
int? age = null;
string userName = name ?? "匿名"; // 如果name不为空, 返回name的值, 反之就返回 "匿名"
int userAge = age ?? 1; // 如果age 不为空, 返回age 的值, 反之返回 1
// 引用类型
public class MyClass
{
private static MyClass instance;
public static MyClass Instance
{
get{
return instance ?? ( instance = new MyClass() );
}
}
}