C# ?. 問號後面加點的用法說明

在 C# 中,問號?後面加上點.的語法是一種稱為 "null 條件運算子" 的語法。這個語法可以讓你在存取物件的屬性或方法時,先檢查該物件是否為 null,避免因為 null 參考而造成的例外錯誤。

以下是一些使用該語法的範例及說明。


範例 1:檢查物件是否為 null

假設我們有一個叫做 person 的物件,我們要取得他的名字。若 person 為 null,直接取名字的話會造成例外錯誤。因此,我們可以使用 null 條件運算子來檢查 person 是否為 null,如果是,則不執行取名字的動作。

string name = person?.Name;


如果 person 不是 null,上述程式碼會取得 person 的名字。如果 person 為 null,則上述程式碼會回傳 null,而不會發生例外錯誤。

範例 2:呼叫方法

假設我們有一個叫做 calculator 的物件,我們要呼叫他的 Add 方法來計算兩個數字的和。若 calculator 為 null,直接呼叫 Add 方法的話會造成例外錯誤。因此,我們可以使用 null 條件運算子來檢查 calculator 是否為 null,如果是,則不執行呼叫 Add 方法的動作。


int sum = calculator?.Add(1, 2);

如果 calculator 不是 null,上述程式碼會呼叫 calculator 的 Add 方法來計算 1 和 2 的和。如果 calculator 為 null,則上述程式碼會回傳 null,而不會發生例外錯誤。



範例 3:存取集合元素

假設我們有一個叫做 list 的集合物件,我們要取得第一個元素的名字。若 list 為 null 或者 list 沒有任何元素,直接取第一個元素的話會造成例外錯誤。因此,我們可以使用 null 條件運算子來檢查 list 是否為 null,如果是,則不執行取第一個元素的動作。


string firstName = list?.FirstOrDefault()?.Name;


如果 list 不是 null,並且有元素,上述程式碼會取得 list 的第一個元素的名字。如果 list 為 null 或者沒有任何元素,則上述程式碼會回傳 null,而不會發生例外錯誤。







留言