2017年9月28日 星期四

[C#] ?:, ??, ?.

    • C 語言就有提供此運算方法
if (test > 0) // 任何 Boolean 運算式
{
    // test 為 true 時,所傳回的運算式。 可為逗號運算子。
    return expression1
}
else 
{
    // test 為 false 時,所傳回的運算式。 可為逗號運算子。
    return expression2
}
    • 根據條件傳回兩個運算式的其中一個
test ? expression1 : expression2
    • ?: 運算子可當做 if...else 陳述式的簡短表示法
    • 在一些大型運算式中,若使用 if...else 陳述式會顯得很冗長,因此通常會只用此大型運算式其中一部分

    • C# 2.0 後的運算子
    • 如果運算元不是 null,則會傳回左方運算元,否則傳回右方運算元
int? test = null;

int n = test == null ? 0 : test;
    • 主要判別 test != null (null coalescing operator) 情況
int? test = null;

int n = test ?? test;
    • 另個特性是可直接串連,最後如果 ABCD 都 null 就傳 E
int n = A ?? B ?? C ?? D ?? E;

    • C# 6.0 後的運算子
    • 成員存取 (?.) 或對 (?[) 作業編製索引之前,可用來測試是否為 Null

// null if customers is null 
int? length = customers?.Length; 
// null if customers is null    
Customer first = customers?[0];  
// null if customers, the first customer, or Orders is null
int? count = customers?[0]?.Orders?.Count();  
    • 協助您撰寫較少的程式碼來處理 Null 檢查,特別是遞減至資料結構

  • REF:

沒有留言:

張貼留言