回覆列表
  • 1 # 使用者6821242438789

    9月份微軟釋出了.NetCore3.0,隨之也釋出了最新的C#8.0.

    支援一下幾個新特性:

    可空引用型別

    C#8.0引入了可為空的引用型別和不可為空的引用型別,使可以對引用型別變數的屬性進行重要宣告:

    引用不應為null。當變數不應該為null時,編譯器將執行規則,以確保可以安全地取消引用這些變數,而無需先檢查其是否為null。引用可以為null。當變數可能為null時,編譯器將實施不同的規則,以確保已正確檢查了null引用。

    與無法從變數宣告中確定設計意圖的早期C#版本中,對引用變數的處理相比,此新功能具有明顯的優勢。透過新增可為空的引用型別,可以更清楚地宣告的意圖,並且編譯器都可以幫助正確地做到這一點並發現程式碼中的錯誤。

    介面成員的預設實現

    如今,釋出介面後,更改介面的工作就結束了:必須在不破壞現有介面的所有實現者的情況下為其新增成員。

    使用C#8.0,可以為介面成員提供主體。結果如果實現該介面的類沒有實現該成員(可能是因為在編寫程式碼時還不存在該成員),那麼呼叫程式碼將只獲得預設實現。

    非同步流

    現在foreach,可以使用來處理非同步資料流IAsyncEnumerable<T>。這個新介面正是所期望的。的非同步版本IEnumerable<T>。該語言使await foreach可以完成任務以消耗其元素。在生產方面,yield return需要生成一個非同步流。這聽起來可能有點複雜,但是在實踐中卻非常容易。

    以下示例演示了非同步流的產生和使用。foreach語句是非同步的,它本身使用yield return為呼叫者生成非同步流。yield return建議使用此模式- 生成非同步流。

    指數和範圍

    我們建立了新的語法和型別,可用於描述索引器,用於陣列元素訪問或用於公開直接資料訪問的任何其他型別。這包括支援單個值(索引的通常定義)或兩個值(描述範圍)。

    Index是描述陣列索引的新型別。可以Index從一個從頭算起的int 建立一個int,或者從一個從頭算起的字首^運算子建立一個int 。

    使用宣告

    using宣告附加到當前語句塊的作用域,然後將物件放置在它的末尾。

    切換表示式

    任何使用C#的人都可能喜歡switch語句的概念,而不喜歡語法。C#8引入了開關表示式,該表示式可啟用以下功能:

    簡短語法返回值,因為它是一個表示式 與模式匹配完全整合

    switch關鍵字是“ infix”,這意味著關鍵字位於測試值(o在第一個示例中)和案例列表之間,非常類似於表示式lambdas。

    C#現在迭代的非常快,從5.0到6.0到7.0到8.0,出了很多新東西,讓程式碼更加優雅~

  • 中秋節和大豐收的關聯?
  • 衝牙器什麼時候用?