c# 語言是在2000發布的,至今已正式發布了7個版本,每個版本都包含了許多令人興奮的新特性和功能更新。同時,c# 每個版本的發布都與同時期的 visual studio 以及 .net 執行時版本高度耦合,這也有助於開發者更好的學習掌握 c#,並將其與 visual studio 以及 .net 的使用結合起來。
在被稱為「新微軟」的推動下,微軟創新的步伐也加快了。為了做到加快步伐,微軟開發部門將一些過去整合在一起的技術現在都分離了出來。
visual studio、.net framework、.net 執行時、編譯器和編譯執行時的執行語言都被拆分成自己的包和版本,這意味著以上每乙個都可以按照自己的節奏發布了。現在,我們已經看到了這種模式的成功。.net core 2.0 的工作已經完成了,並從 visual studio 發布出來,同時也增加了對 linux 的支援。幾乎與 .net core 2 發布的同時,c# 7.1 版本也發布了。
c# 7.1 是乙個重要的發布版本,雖然新功能不多,但它卻是 c# 第7個大版本的開始。c# 7.2 版本的工作已經展開了,同時也在計畫著 c# 7.3 版本。儘管 c# 8.0 版本還有點遠,但是微軟技術人員已經對 c# 8.0 版本的特性有了一些想法。
語言設計的討論是公開的,圍繞 c# 8.0 版本新特性的問題部分也進行了廣泛的討論。檢查每個發行版本的里程碑,同時也為未來的 c# 路線圖做好評估。
下面正式開始介紹 c# 8.0 版本中令人興奮的三個新特性。
c# 有兩大變數型別:基本型別和引用型別。原先的型別是 int、char 和 double。這些型別都不能接受 null 值。在不分配新值的情況下,建立乙個新的 int 值,會導致 int 值為 0 而不是 null。c# 2.0 介紹了帶有「?」符號的變數原語的可空版本。因此,int?是 int 的乙個版本,它可以接受空值。
另一方面,引用型別(如字串這樣的物件)始終能夠接受 null 值,並將 null 作為預設值。這也帶了來乙個缺點,就是可能導致應用程式中帶入空引用。
在 c# 8.0 中,將引用型別設為非空,成為了乙個可選的特性。
為c #引入這樣的特性是很困難的,因為這為原本已經執行很好的**,引入了潛在的編譯錯誤。因此需要做的是,建立此功能的方法,而不是為開發人員帶來無法估量的工作量。
根據設計方案,c# 團隊決定採取乙個允許開發者可以選擇可空引用型別的方法。這將是乙個工程級別的設定,以便啟用對可空引用的驗證。一旦啟用,可接受 null 值的物件就需要使用?運算子進行宣告。
如下**:
string s = null;這將引起警告,因為字串不能接受空值。因此需要以下**:console.write(s);
string? s = null;然而,上面**也會在console丟擲乙個警告,寫的是不希望收到乙個空字串。事實上,原始**可能有錯誤,所以級聯警告可以幫助我們避免執行時錯誤。這是最有可能提高**質量的語言變化。console.write(s);
c # 8.0 的乙個很棒的新特性,是有一種新方式來建立乙個被稱為 records 的類。這個類本質上是乙個非常輕量級的類,是乙個字段集合,能夠幫助快速建立 poco 型別的物件,同時也可以解決比較物件是否相等時的關鍵問題。
例如,為銀行帳戶建立 record 型別:
class bankaccount(guid id, string name, decimal balance)這是一種建立簡單類的很好的方法。
用 records 解決物件相等問題
在 c# 程式設計中,乙個最難掌握的內容就是,將==運算子用於引用型別和原語之間的區別。
為了舉例說明,我們使用==對比兩個整數:
int i = 1;int j = 1;原語的值是相等的。但是,對於引用型別,卻不相等。i == j //yields true
object i = new object();這是因為 c# 的引用型別比較會考慮引用相等,也就是說,只有當兩個物件是同乙個物件才相等。records 型別提供了結構上的相等,等同於相等運算子。建立新 record 的語法非常簡潔,因為生成的物件是簡單的資料傳輸物件。object j = new object();
i == j //yields false
records 是乙個輕量級物件,使用起來非常方便。雖然 records 不是語言的乙個突破性的變化,但也是乙個漸進的改進,值得歡迎。
版本控制介面可能會令人懊惱, 因為它要求介面上的新方法來實現介面上的所有物件。隨著新方法新增到了介面中,實現它們的任務就落在了實現介面的各個類中。因為各個實現不必須共有同乙個父類,新增到介面的方法就可以在各自的類中實現。
預設介面實現允許在介面中指定乙個實現,只要它是介面上現有方法的函式實現的。下面再以銀行帳戶為例:
public inte***ce ibankaccountmanager現在為了便於使用,我們想在銀行賬戶上提供明確的借方和信譽功能。通常我們會為介面新增這些功能並在所有的類中實現它們。
public inte***ce ibankaccountmanager」);預設介面實現提供了一種強大的新方法來擴充套件實現介面的類,而無需重複**。只需遵從預設實現,許多介面的類的實現就可以得到大大簡化。} void performcredit(decimal amount, string reason)」); } }
正是因為這些新特性,才讓我們毫不懷疑這就是 c# 8.0。以下是其它一些 c# 8.0 新特性:
componentone studio enterprise 是一款專注於企業應用的 .net 全功能控制項套包,支援 winforms、wpf、uwp、asp.net mvc 等多個平台,幫助您在縮減成本的同時,提前交付豐富的桌面、web 和移動企業應用。控制項支援的範圍廣泛,包含了**和資料管理、圖表和資料視覺化、流行的ui介面等,為企業應用開發提供高效能的控制項工具。
過去幾年中,.net 的創新速度確實加快了。雖然 c# 8.0 目前還沒有實現,但是它比起 c# 7.0,將帶來很多有幫助的提公升,讓我們一起期待 c# 8.0 的早日到來。
葡萄城成立於2023年,是全球最大的控制項提供商,世界領先的企業應用定製工具、企業報表和商業智慧型解決方案提供商,為超過75%的全球財富500強企業提供服務。葡萄城於2023年在中國設立研發中心,在全球化產品的研發過程中,不斷適應中國市場的本地需求,並為軟體企業和各行業的資訊化提供優秀的軟體工具和諮詢服務。
C 8 0的三個令人興奮的新特性
c 語言是在2000發布的,至今已正式發布了7個版本,每個版本都包含了許多令人興奮的新特性和功能更新。同時,c 每個版本的發布都與同時期的 visual studio 以及 net 執行時版本高度耦合,這也有助於開發者更好的學習掌握 c 並將其與 visual studio 以及 net 的使用結合...
C 8 0的三個值得關注的新特性
本文翻譯自 c 語言是在2000發布的,至今已正式發布了7個版本,每個版本都包含了許多令人興奮的新特性和功能更新。同時,c 每個版本的發布都與同時期的 visual studio 以及 net 執行時版本高度耦合,這也有助於開發者更好的學習掌握 c 並將其與 visual studio 以及 net...
C 8 0的三個值得關注的新特性
c 語言是在2000發布的,至今已正式發布了7個版本,每個版本都包含了許多令人興奮的新特性和功能更新。同時,c 每個版本的發布都與同時期的 visual studio 以及 net 執行時版本高度耦合,這也有助於開發者更好的學習掌握 c 並將其與 visual studio 以及 net 的使用結合...