public void showperson(person person)
這段**檢查了 person物件是否為空,如果為空則return 不再執行後面的邏輯。
那我們用空值傳播運算子寫個例子:
public void showperson(person person)
上面這個例子使用了 "?" 當 person 不為空時繼續執行右邊的**, 反之返回null
這裡就有乙個有趣的問題了, string是值型別,不接受null 這明顯有 bug啊 ? 這就厲害了,還記得前面講過的空值合併嗎?
來看這個例子,打一套組合拳:
public void showperson(person person)
?? 右邊的值是為了防止左邊的結果為空。 雖然問號多了點, 但是其原理還是非常簡單。
還可以多個空值傳播運算子進行組合。看例:
// 不使用空值運算子
public void showperson(person person)
}// 使用空值運算子
public void showperson(person person)
陣列也可使用空值傳播運算子:
int arr = null;
int x = arr[0]; // 傳統寫法
int x = arr ? [0] ?? 0; // 使用了組合拳
C 空合併運算子
c 除了有?這個三元運算子以外 還有兩個問號?運算子叫做空合併運算子,用來判斷null值取空非常方便 string c a b a是值型別string,如果a是null,那麼c b,否則c a。這樣就會有新的需求,如果a是乙個物件 引用型別 a有name欄位,我們需要在a不是null的時候獲取a.n...
空接合運算子, 可空型別和運算子,typeof
空接合運算子空接合運算子 提供了一種快捷方式,可以在處理可空型別和引用型別時表示null值。這個運算子放在兩個運算元之間,第乙個運算元必須是乙個可空型別或引用型別,第二個運算元必須與第乙個運算元的型別相同,或者可以隱含地轉換為第乙個運算元的型別。空接合運算子的計算如下 如果第乙個運算元不是null,...
空接合運算子, 可空型別和運算子,typeof
空接合運算子空接合運算子 提供了一種快捷方式,可以在處理可空型別和引用型別時表示null值。這個運算子放在兩個運算元之間,第乙個運算元必須是乙個可空型別或引用型別,第二個運算元必須與第乙個運算元的型別相同,或者可以隱含地轉換為第乙個運算元的型別。空接合運算子的計算如下 如果第乙個運算元不是null,...