空條件運算子
?.
運算子是語法糖,以避免冗長的空值檢查。它也被稱為安全導航運算子 。
以下示例中使用的類:
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";