空条件运算符

?. 运算符是语法糖,以避免冗长的空值检查。它也被称为安全导航运算符

以下示例中使用的类:

public class Person
{
    public int Age { get; set; }
    public string Name { get; set; }
    public Person Spouse { get; set; }
}

如果对象可能为 null(例如返回引用类型的函数),则必须首先检查对象是否为 null 以防止可能的 NullReferenceException。如果没有 null 条件运算符,它将如下所示:

Person person = GetPerson();

int? age = null;
if (person != null)
    age = person.Age;

使用空条件运算符的相同示例:

Person person = GetPerson();

var age = person?.Age;    // 'age' will be of type 'int?', even if 'person' is not null

链接运算符

可以将零条件运算符组合在对象的成员和子成员上。

// Will be null if either `person` or `person.Spouse` are null
int? spouseAge = person?.Spouse?.Age;

与 Null-Coalescing 运算符结合使用

可以将 null 条件运算符与 null-coalescing 运算符组合以提供默认值:

// spouseDisplayName will be "N/A" if person, Spouse, or Name is null
var spouseDisplayName = person?.Spouse?.Name ?? "N/A";