C# Null Conditional Operator, Null 條件運算子

2021-06-23

筆記 C# Null Conditional Operator (Null 條件預算子)的使用方式,讓處理物件的 Null 檢查上更為方便(此語言特性為 C# 6.0 所加入)😎

logo

說明

檢查是否為 Null

?. 語法也稱為貓王運算子(Elvis Operator),因為顏文字看很像一對眼睛搭配貓王的捲髮。

Object?.Property

// 相當於以下邏輯
if (Object == null)
{
    return null;
}
else
{
    return Object.Property;
}

可以做 Chaining 的 Null Condition

Object?.SubObject?.Property

// 相當於以下邏輯
if (Object != null && Object.SubObject != null)
{
    return Object.SubObject.Property;
}
else
{
    return
}

Null 情況下的預設值

Object ?? "VALUE"

// 相當於以下邏輯
if (Object == null)
{
    return "VALUE";
}
else
{
    return Object;
}

聯合指派, Null-Coalescing Assignment Operator

C# 8.0 以後支援聯合指派新語法,??= 可以檢查物件是否為 Null 並進行賦值。

Object ??= new ClassName();

// 相當於以下邏輯

if (Object == null)
{
    Object = new ClassName();
}

參考資料

?? and ??= operators (C# reference)

Null-conditional operators ?. and ?[]