網路城邦
上一篇 回創作列表 下一篇   字體:
C# 9.0
2023/02/01 10:00:00瀏覽57|回應0|推薦0

隨著.NET 5.0的到來,微軟更新了C#的版本9.0,這邊簡單介紹一下C#9.0的內容,也讓自己在寫文章的同時熟悉過一次這些微軟所提供的新功能。

1. 記錄類型(record type)

record是種新的參考類型(reference type),同樣為參考類型的還有class、struct,record專門用來使用在不會經常改變、不必經常裝箱(boxing)的資料,值得注意的是,若new了兩次完全相同的class,==會是false;但若是使用record,==會return true。如下方程式碼所示

 

2. 僅供初始化的 Setter

9.0新增了init的存取子(Setter),使得值只能在初始化時候填入,如下方程式碼所示  

 

3. 最上層陳述式

這是一個方便平常寫小工具時的功能,現在如果只是想寫一行”Hello World!”,其他行都可以不必寫,cs檔案裡面真的只需要寫一行System.Console.WriteLine("Hello World!");,但要注意的是一個專案裡面,只能有一個檔案使用最上層陳述式,否則會報錯誤,且使用最上層陳述式在專案可能會讓其他人感到混亂,所以最好還是在自己使用的小工具或是教學範本裡使用就好。

     

4. 模式比對增強功能

可以用邏輯運算符號互相結合,有and、or、not,以前的if not null可能只能這樣寫 if (!(e is null)) { ... } 但是現在可以改成這樣 if (e is not null) { ... }  

5. with表達式

這個9.0新增的表達式只能在前面1.提到的record紀錄類型中使用,在以前要建立新的物件要如何達成?必須重新new就算跟以前的物件完全相同,但現在配合新的with表達式即可清楚簡單的建立新物件,跟record型態更是搭配,以下拿1.的範例稍作修改,現在我們需要建立一個triStudentRecord但只有Name需要更改,這時候就是用with的好時機,如下方程式碼所示

 

6. 省略 new 運算式中的型別

在9.0如果要new的時候,已經宣告了明確的類型,則可以直接使用new 不需要後面打一次型別,如下方程式碼所示

 

結論:

每次隨著.NET版本的更新,微軟都會一起更新C#的版本,.NET新的功能固然吸引人,但C#的更新內容也是很重要,每次更新後最好都讀過一輪的更新內容,否則哪天維護新的專案時。發現看不懂的新寫法;又或著自己需要開新專案時,也可以直接使用這些新功能為你帶來一些方便,何嘗不是種好事呢! 還有一些未提到的新功能,詳細更新內容請觀看微軟C#9.0官方文件: https://docs.microsoft.com/zh-tw/dotnet/csharp/whats-new/csharp-9 

參考來源:

  1. https://stackoverflow.com/questions/64816714/when-to-use-record-vs-class-vs-struct
  2. https://www.c-sharpcorner.com/article/using-records-in-c-sharp-9-0/
  3. https://docs.microsoft.com/zh-tw/dotnet/csharp/whats-new/csharp-9
  4. https://docs.microsoft.com/zh-tw/dotnet/csharp/tutorials/exploration/records
( 知識學習其他 )
回應 推薦文章 列印 加入我的文摘
上一篇 回創作列表 下一篇

引用
引用網址:https://classic-blog.udn.com/article/trackback.jsp?uid=acaj2018&aid=171639889