日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C# 的未来:主构造函数

發布時間:2023/12/4 C# 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# 的未来:主构造函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我們上次提到主構造函數是 2014 年,當時, C# 6 和 VB 12 的候選列表上去掉了主構造函數。去年底,主構造函數重新出現,作為提案#2691 ,現在成為 C# 9 的一個候選項。

主構造函數背后的基本思想是減少初始化類所需的樣板代碼量。

class C(string x) {public string X{get => x;set { if (value == null) throw new NullArgumentException(nameof(X)); x = value; }} }

編譯為…

class C {private string _x;public C(string x){_x = x;}public string X{get => x;set { if (value == null) throw new NullArgumentException(nameof(X)); x = value; }} }

Richard Gibson 對它們的用處進行了總結:

從我們 30 個類的代碼庫中快速抽樣表明,其中的 22 個(73%)已定義了顯式構造函數,而有 21 個(>95%)什么也沒做,只是設置了私有只讀字段)人們很少閱讀可以自動生成的代碼(通常被跳過,因為它們通常看上去很傻),因此,它們常常是讓人大吃一驚的錯誤來源。

他繼續解釋道,這些錯誤通常是因為不小心把構造函數參數賦給了錯誤的字段。

這個概念跟我們在 C#和 VB 中更簡單的不可變對象報告的記錄提案有很大的重合。MgSam 寫道:

該提案似乎與目前的記錄提案完全不相容。我不同意提案中的說法,提案提到這比記錄更有用。我認為,這可以節省一些樣板記錄,而記錄(以及自動生成 GetHashCode、Equals 和 ToString 相關的功能)在很多場景中有可能節約大量模板。

HaloFour 也參與了該話題:

按照為 C#提出的記錄方式,它們包括對稱構造和解構,以及基于一組特定屬性的識別。假設這些參數也是屬性,那么主構造函數把這些都放在一個參數列表中,并且該列表給我們提供了一個可以解構這些屬性的順序。

正如他們所提出的,C#記錄更像 Scala 的 case 類或 F#單例聯合,并且,這兩種語言都根據它們的構造方式定義構造。

總結

以上是生活随笔為你收集整理的C# 的未来:主构造函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。