C# Operator 特殊的運算子 ?: 、??和?.
3 min readMar 15, 2020
C# 提供許多內建的計算方式與布林判斷式,這篇會分享一些較特別的運算子實例呈現。
?: operator
var value = expression1 : expression2;example:
int test = 10;
int a = test > 0 ? 5 : -1;//a = 5
運算原理會是先判斷 test > 0 這件事成不成立,如果成立回傳5,不成立的話回傳-1。
int a = test > 0 ? 5 : -1;
這個運算式其實就等於做了以下這些事//if (test > 0)
//{
// a = 5;
//}
//else
//{
// a = -1;
//}
?? operator
value ?? expressionexample:
int? NullableValue = null;
int b = NullableValue ?? -1;//b = -1
運算原理會是先判斷 NullableValue 的值是不是null,如果是回傳-1,不成立的話回傳NullableValue 的值。
int b = NullableValue ?? -1;
這個運算式其實就等於做了以下這些事//if (NullableValue is null)
//{
// b = -1;
//}
//else
//{
// b = NullableValue.Value;
//}
?. operator
value ?. expressionexample:
int[] NullableArrayValue = null;
int? c = NullableArrayValue?.Length;//c = null
運算原理會是先判斷 NullableArrayValue 的值是不是null,如果是回傳null不繼續往下跑鏈結函式,不成立的話回傳NullableArrayValue往下一層做的鏈結函式,當然越多層也可以一直往下串?.運算子。
int? c = NullableArrayValue?.Length;
這個運算式其實就等於做了以下這些事//if (NullableArrayValue is null)
//{
// c = null;
//}
//else
//{
// c = NullableArrayValue.Length;
//}
Conclusion: 練習一些特殊的運算子,在開發上使用的好處是省去多餘的程式撰寫,省下多餘程式碼還可以讓程式閱讀性更好,Why not?
參考文章
Thanks for your reading.