.NET 7 為 C# 11和F# 7 帶來了更好的性能和新特性
2022 年 11 月 8 日,.NET 7 正式發布了,從 11 月 8 號 到 10 號,線上的 .NET Conf 2022 會議正在舉行,可以通過 https://www.dotnetconf.net/ 了解相關情況。
微軟現在節奏越來越快,相信很多人還沒在生產上使用 .NET 6 , 7 就發布了,先來看看都有什么新特性吧。
.NET 7 為 C# 11/F# 7 帶來了更好的性能和新特性,體現在 .NET MAUI,ASP.NET Core/Blazor ,Web API,WinForms,WPF 等等。
.NET 7 在 Visual Studio 17.4.0 版本中支持,17.4.0 版本是 Visual Studio 2022的第三個長期服務渠道 (LTSC) ,17.4 LTSC 版本將支持到 2024 年 7 月 11 日。如果已經安裝了 Visual Studio 2022 ,可以直接更新,也可以通過下面地址下載安裝:
https://dotnet.microsoft.com/zh-cn/download。
我個人比較關注的是工具和語言。
更新 Visual Studio
在幫助中點擊檢查更新就可以啟動更新,需要等待更新的下載:
更新完成后重啟電腦,再打開 Visual Studio ,就可以看到框架選擇中有 .NET 7.0 了。
Visual Studio 的改進
選擇文本匹配項高亮顯示
在「工具->選項->文本編輯器->常規」界面可以開啟「顯示 selection 匹配項」。
勾選此項后,在編輯器中選擇某個文本,編輯器其他有選擇文本的地方會進行高亮顯示,滾動條中也顯示了標記來指示哪些位置有和選擇文本相同的文本。
目前,它只適用于長度小于 200 個字符的字符串,并且所有字符都在一行上。
音頻提示
在「工具->選項->文本編輯器->常規」界面可以開啟啟用音頻提示,需要重新啟動 VisualStudio 生效。
啟用后,編輯器中某一個行設置了斷點,或者這一行的代碼有警告或者錯誤,光標移動到這一行時,Visual Studio 會播放一個聲音。
斷點因為有高亮背景色,有沒有提示音都行,警告和錯誤,有時不太容易看出來,這個聲音就能起到作用了。
DataTable 可視化工具
在調試時,DataTable 可以直接打開成一個列表,在這個列表界面中可以進行搜索和導出成 Excel 。
當然,Visual Studio 17.4 還有更多的新增特性,可以參考下面地址:
https://devblogs.microsoft.com/visualstudio/visual-studio-2022-17-4/。
C# 11
原始字符串
在 C# 中字符串是用雙引號包含起來的內容,這個內容中可能還會有各種符號,比如:斜杠、雙引號、單引號等等,像 json 、xml 內容中就經常出現雙引號,之前需要使用轉義符來進行處理,而在 C# 11 中可以使用三個引號包含字符串內容,來實現原始字符串,這個功能真是太喜歡了。
運行結果:
自動默認結構
在 C# 10 或更早版本中,創建結構時,必須初始化所有字段值。如果有字段沒有初始化,會有編譯錯誤。C# 11 引入了 「自動默認結構」,它會初始化字段為默認值。
比如在 C# 10 中,會出現這樣的錯誤:
C# 11 中這段代碼是可以正常執行,Age 會被初始化為 0 。
必要成員
當一個類的屬性需要強制在類初始化時進行賦值的時候,就可以用 required 關鍵字進行修飾:
在創建 User 對象時,如果沒有初始化 UserName 和 Age 就會出現錯誤,如下圖:
列表模式
從 C# 11 開始,數組或列表可以與元素序列相匹配,元素序列就是一組由中括號括起來的元素,匹配使用 is 關鍵字。
列表模式有三種不同的方式:Discard pattern、Range pattern、Var pattern
Discard pattern:
比如還是上面例子中的數組 testArray ,想要知道是否匹配第一個元素為 1 ,可以這樣來實現:
- 序列的長度要和數字相同。
- 序列中不用匹配的元素可以使用 _ 進行忽略。
Range pattern:
在匹配時,如果序列中元素個數是未知的,那么 Range pattern 就可以起作用。使用兩個點可以用來指定任意數量的元素,兩個點只能在序列中使用一次。
Var pattern:
在這個模式中,可以在 var 關鍵字后面加變量,匹配上的元素的值會賦值給變量。
其他的特性,如:對靜態成員進行抽象等,我覺得可以單獨寫文章來介紹。
最近因為項目原因,寫了一些 Java 代碼,相比之下,C# 優雅太多了,希望 .NET 能越來越好,在國內得到更多的認可。