2020年9月6日 星期日

C# 7.0

C# 7.0 持續追加feature,撰寫的自由度越來越高且狂,第一次看到時驚為天人,手感上有種慢慢偏動態語言的錯覺,

另外,在「模式比對」這一塊,有種遊戲使用「外掛」,看到黑影就可以開槍打中的錯覺,世界已經不是慢慢轉動,是跳耀式進展...

列出常用到的項目提供討論


out 變數

以往要使用out 關鍵字都需要先宣告,現在不用了,直接隨用隨宣告,另外變數型別也可以

使用 var ,讓設計時期還不確定轉型時很方便,如下所示


以上看出節省不必要的宣告定義

 

更多運算式主體成員

在C# 6.0 針對「唯獨屬性」或「方法」,且為單一陳述示可以使用運算示主體,現在更擴大到建構式、解構式、

get、set 等等...,支援度更全面


 

以上可看出彈性加大

 

 

數值常值的語法增強功能

為了讓數值設定上更加容易識別,可加上底線「_」作為分隔符號,如下所示


其他 float、double、decimal 同樣適用


 

二進位也可以


 

以上可看出,對於數值應用的友善度增加

 

 

區域函式

設計函式時有時會延伸需要一些輔助方法來幫助完成任務,但這些輔助方法其實也就只有這個函式會呼叫,其他的不會使用到,

因此區域函式的概念油然生成(以往在寫前端較可能發生的事情,現在也都可以實作出來了);值得注意的是,以往設計程式的

核心是單一職責,且函式盡量短,所以在使用這類實作時,優先考慮具有迭代性質與非同步執行


先看以下範例,其中GetValueAsyne 為匿名函式,主要是處理取值得動作,前段為判斷及

丟出例外,區分出職責

 



再一個例子,同樣來自官網,判斷檔案路徑是否需要附加分割符號,使用區域函式包裝邏輯


同樣,若非同步函式裡面需要各別執行非同步任務,也適合這個技巧,將參考列上


另一個重點,區域函式某種程度可以使用Lambda 運算式取代


以上可看出試圖對於僅單一參考函式設計的便利性

 

模式比對

透過關鍵字 is 與 switch 的擴充,達到方便判斷比對並進行邏輯分派的模式;例如 is 關鍵字,可以用來判斷是不是某個

類型(參考型別),若是則回傳 true,現在可以多判斷 stuct 類型,若陳述式有動態的型別,則可以如下判斷




再來看 switch ,以往被拿來判斷列舉(數值)或字串,現在甚麼都可以判斷,搭配 foreach、when…等等,先來看如何改進上面的例子


以上是不是清爽很多,接著再看綜合型的,如下所示,當你的參數可能是任意型別 object



上面可看出,是一個object 的集合,case 弄得非常豐富,但由於最終是要回傳 int 出去,故還是有例外的判斷。


此功能對於非繼承階層關聯之不同變數和類型的控制流程很有幫助,控制上可做到高內聚或案例釐清


 

Tuple

實務上目前確實較少使用,除了較明確一組對應的存在的數值,例如:經緯度;一次回傳一組值,且不能是自訂方法,如下所示



詳細介紹可參考




相關參考

C# 7.0 的新功能


 

 

 

  


沒有留言:

張貼留言