空条件运算符
?.
运算符是语法糖,以避免冗长的空值检查。它也被称为安全导航运算符 。
以下示例中使用的类:
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";