2020年9月5日 星期六

C# 6.0

 .net 發展至今,隨著.net core 3.1 的發佈,武器庫是越來越兇狠,新的語法支援可以更快速產出,編譯器也會

幫我們編出高效率的中繼碼,但實務還上還是有人不知道,這邊列出自己實務上很常使用的語法並且搭配應用情境,

另外,C# 6.0 其實在 VS2015 就已經支援了。

以下陸續列出日常實際使用的項目


字串插值(string format)

已往我們都是透過string.Format 來組合字串與變數,現在可以直接在字串表達式前面使用「$」關鍵字來達到組合的效果。



 

也可以搭配verbatim string literal 一起使用,關鍵字「@」


 

透過這個方法可以讓程式碼短一點,即視感也提升

 

Null 條件運算子

實務上,有時會需要判斷某個物件的屬性或方法參數的值,才決定下一步的動作,但若物件或參數本人是null 而

直接取值也會發生錯誤,所以往往會多判斷,如下所示

 


 

使用了 null 條件運算子,僅需要在變數後方加上「?」後續接著原本的寫法即可,如下所示


 

也可以搭配 Null 聯合運算子「??」來設定值,如下所示 


原理上是這樣的,若雙 ?? 左邊為 null 值,則回傳右邊的值;其中,在 linq 或迴圈迭代中滿常用的。

 

唯讀 Auto 屬性與初始設定式

之前設定唯讀屬性需要搭配 private set 一起使用,現僅需要 get 即可,如下所示


以上兩者編譯都會過


至於初始設定式,就是唯讀的屬性,可以透過建構式傳入設定值或是宣告值直接給值,如下


其中,若屬性是物件類別,也是可以使用直接設定,僅 = 後方改成 new 關鍵字宣告即可。


初始設定式,不用像以往需要實作 prop full 完整的設計才有初始值,簡化了許多步驟。


具有運算式主體的函式成員

有時候我們設計方法僅有單一陳述式,而這些陳述式可能是單一運算式,這時候我們不用宣告完整的 { },可用類似 lambda 撰寫方式完成實作,如下


以上可看出,該技巧適用 「屬性」與「方法」


 
 

nameof 表示式

有時候方法會有基本的防呆,如判斷參數是否為null 並丟出例外,如下


這做法很棒,但若參數名稱改了(重構),又要手動調整已設定字串名稱,有點麻煩,故6.0 提供了 nameof 關鍵字來幫我們節省力氣


 

其他還有其他不錯的feature,列出參考


沒有留言:

張貼留言