空條件運算子

?. 運算子是語法糖,以避免冗長的空值檢查。它也被稱為安全導航運算子

以下示例中使用的類:

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";