共用方式為


?? 運算子 (C# 參考)

?? 運算子稱為 null 聯合運算子。如果運算元不是 null,則會傳回左方運算元,否則傳回右方運算元。

備註

可為 Null 的類型可以表示來自類型網域的值,或值可以是未定義 (這種情況下,值為 null)。 當左方運算元是可為 null 類型且其值為 null 時,您可以使用 ?? 運算子的語法表達能力傳回適當的值 (右方運算元)。 如果您嘗試在不使用 ?? 運算子的情況下,將可為 null 的實值類型指派給不可為 null 的實值類型,則會產生編譯時期錯誤。 如果您使用轉型,而可為 null 的實值類型目前為未定義,則會擲回 InvalidOperationException 例外狀況。

如需詳細資訊,請參閱可為 Null 的類型 (C# 程式設計手冊)

?? 運算子的結果不會視為常數,即使它的引數都是常數也一樣。

範例

class NullCoalesce
{
    static int? GetNullableInt()
    {
        return null;
    }

    static string GetStringValue()
    {
        return null;
    }

    static void Main()
    {
        int? x = null;

        // Set y to the value of x if x is NOT null; otherwise, 
        // if x = null, set y to -1. 
        int y = x ?? -1;

        // Assign i to return value of the method if the method's result 
        // is NOT null; otherwise, if the result is null, set i to the 
        // default value of int. 
        int i = GetNullableInt() ?? default(int);

        string s = GetStringValue();
        // Display the value of s if s is NOT null; otherwise,  
        // display the string "Unspecified".
        Console.WriteLine(s ?? "Unspecified");
    }
}

請參閱

參考

C# 運算子

可為 Null 的類型 (C# 程式設計手冊)

概念

C# 程式設計手冊

其他資源

C# 參考

「增益」(Lift) 的真正意義是什麼?