C# 語言是在2000發(fā)布的,至今已正式發(fā)布了7個版本,每個版本都包含了許多令人興奮的新特性和功能更新。同時,C# 每個版本的發(fā)布都與同時期的 Visual Studio 以及 .NET 運行時版本高度耦合,這也有助于開發(fā)者更好的學(xué)習(xí)掌握 C#,并將其與 Visual Studio 以及 .NET 的使用結(jié)合起來。
在被稱為“新微軟”的推動下,微軟創(chuàng)新的步伐也加快了。為了做到加快步伐,微軟開發(fā)部門將一些過去集成在一起的技術(shù)現(xiàn)在都分離了出來。
Visual Studio、.NET Framework、.NET 運行時、編譯器和編譯運行時的運行語言都被拆分成自己的包和版本,這意味著以上每一個都可以按照自己的節(jié)奏發(fā)布了?,F(xiàn)在,我們已經(jīng)看到了這種模式的成功。.NET Core 2.0 的工作已經(jīng)完成了,并從 Visual Studio 發(fā)布出來,同時也增加了對 Linux 的支持。幾乎與 .NET Core 2 發(fā)布的同時,C# 7.1 版本也發(fā)布了。
C# 7.1 是一個重要的發(fā)布版本,雖然新功能不多,但它卻是 C# 第7個大版本的開始。C# 7.2 版本的工作已經(jīng)展開了,同時也在計劃著 C# 7.3 版本。盡管 C# 8.0 版本還有點遠(yuǎn),但是微軟技術(shù)人員已經(jīng)對 C# 8.0 版本的特性有了一些想法。
語言設(shè)計的討論是公開的,圍繞 C# 8.0 版本新特性的問題部分也進(jìn)行了廣泛的討論。檢查每個發(fā)行版本的里程碑,同時也為未來的 C# 路線圖做好評估。
下面正式開始介紹 C# 8.0 版本中令人興奮的三個新特性。
C# 有兩大變量類型:基本類型和引用類型。原先的類型是 int、char 和 double。這些類型都不能接受 null 值。在不分配新值的情況下,創(chuàng)建一個新的 int 值,會導(dǎo)致 int 值為 0 而不是 null。C# 2.0 介紹了帶有“?”符號的變量原語的可空版本。因此,int?是 int 的一個版本,它可以接受空值。
另一方面,引用類型(如字符串這樣的對象)始終能夠接受 null 值,并將 null 作為默認(rèn)值。這也帶了來一個缺點,就是可能導(dǎo)致應(yīng)用程序中帶入空引用。
在 C# 8.0 中,將引用類型設(shè)為非空,成為了一個可選的特性。
為C #引入這樣的特性是很困難的,因為這為原本已經(jīng)運行很好的代碼,引入了潛在的編譯錯誤。因此需要做的是,創(chuàng)建此功能的方法,而不是為開發(fā)人員帶來無法估量的工作量。
根據(jù)設(shè)計方案,C# 團(tuán)隊決定采取一個允許開發(fā)者可以選擇可空引用類型的方法。這將是一個工程級別的設(shè)定,以便啟用對可空引用的驗證。一旦啟用,可接受 null 值的對象就需要使用?運算符進(jìn)行聲明。
如下代碼:
String s = null; Console.Write(s);
這將引起警告,因為字符串不能接受空值。因此需要以下代碼:
String? s = null; Console.Write(s);
然而,上面代碼也會在Console拋出一個警告,寫的是不希望收到一個空字符串。事實上,原始代碼可能有錯誤,所以級聯(lián)警告可以幫助我們避免運行時錯誤。這是最有可能提高代碼質(zhì)量的語言變化。
C # 8.0 的一個很棒的新特性,是有一種新方式來創(chuàng)建一個被稱為 records 的類。這個類本質(zhì)上是一個非常輕量級的類,是一個字段集合,能夠幫助快速創(chuàng)建 POCO 類型的對象,同時也可以解決比較對象是否相等時的關(guān)鍵問題。
例如,為銀行帳戶創(chuàng)建 record 類型:
class BankAccount(Guid Id, string Name, decimal Balance)
這是一種創(chuàng)建簡單類的很好的方法。
用 records 解決對象相等問題
在 C# 編程中,一個最難掌握的內(nèi)容就是,將==運算符用于引用類型和原語之間的區(qū)別。
為了舉例說明,我們使用==對比兩個整數(shù):
int I = 1;int j = 1; i == j //yields true
原語的值是相等的。但是,對于引用類型,卻不相等。
Object I = new Object(); Object j = new Object(); i == j //yields false
這是因為 C# 的引用類型比較會考慮引用相等,也就是說,只有當(dāng)兩個對象是同一個對象才相等。records 類型提供了結(jié)構(gòu)上的相等,等同于相等運算符。創(chuàng)建新 record 的語法非常簡潔,因為生成的對象是簡單的數(shù)據(jù)傳輸對象。
Records 是一個輕量級對象,使用起來非常方便。雖然 Records 不是語言的一個突破性的變化,但也是一個漸進(jìn)的改進(jìn),值得歡迎。
版本控制接口可能會令人懊惱, 因為它要求接口上的新方法來實現(xiàn)接口上的所有對象。隨著新方法添加到了接口中,實現(xiàn)它們的任務(wù)就落在了實現(xiàn)接口的各個類中。因為各個實現(xiàn)不必須共有同一個父類,添加到接口的方法就可以在各自的類中實現(xiàn)。
默認(rèn)接口實現(xiàn)允許在接口中指定一個實現(xiàn),只要它是接口上現(xiàn)有方法的函數(shù)實現(xiàn)的。下面再以銀行帳戶為例:
public interface IBankAccountManager{ void PerformTransaction(decimal amount, string reason); }
現(xiàn)在為了便于使用,我們想在銀行賬戶上提供明確的借方和信譽(yù)功能。通常我們會為接口添加這些功能并在所有的類中實現(xiàn)它們。
public interface IBankAccountManager{ void PerformTransaction(decimal amount, string reason); void PerformDebit(decimal amount, string reason){ PerformTransaction(-1 * amount, $”Debit: {reason}”); } void PerformCredit(decimal amount, string reason){ PerformTransaction(amount, $”Credit: {reason}”); } }
默認(rèn)接口實現(xiàn)提供了一種強(qiáng)大的新方法來擴(kuò)展實現(xiàn)接口的類,而無需重復(fù)代碼。只需遵從默認(rèn)實現(xiàn),許多接口的類的實現(xiàn)就可以得到大大簡化。
正是因為這些新特性,才讓我們毫不懷疑這就是 C# 8.0。以下是其它一些 C# 8.0 新特性:
提升擴(kuò)展支持 – 這種提升不僅僅可以用于擴(kuò)展方法,它還提供了對屬性、靜態(tài)方法和更多方面的支持。
異步數(shù)據(jù)流 – 能夠擁有支持異步操作的枚舉值。包括新的 iasyncenumerable
Async Disposable – iasyncdisposable 允許對象有一個異步的處理方法。
ComponentOne Studio Enterprise 是一款專注于企業(yè)應(yīng)用的 .NET 全功能控件套包,支持 WinForms、WPF、UWP、ASP.NET MVC 等多個平臺,幫助您在縮減成本的同時,提前交付豐富的桌面、Web 和移動企業(yè)應(yīng)用??丶С值姆秶鷱V泛,包含了表格和數(shù)據(jù)管理、圖表和數(shù)據(jù)可視化、流行的UI界面等,為企業(yè)應(yīng)用開發(fā)提供高性能的控件工具。
過去幾年中,.NET 的創(chuàng)新速度確實加快了。雖然 C# 8.0 目前還沒有實現(xiàn),但是它比起 C# 7.0,將帶來很多有幫助的提升,讓我們一起期待 C# 8.0 的早日到來。
原文鏈接:https://dzone.com/articles/3-new-c-8-features-we-are-excited-about
轉(zhuǎn)載請注明出自:葡萄城控件
葡萄城成立于1980年,是全球大的控件提供商,世界領(lǐng)先的企業(yè)應(yīng)用定制工具、企業(yè)報表和商業(yè)智能解決方案提供商,為超過75%的全球財富500強(qiáng)企業(yè)提供服務(wù)。葡萄城于1988年在中國設(shè)立研發(fā)中心,在全球化產(chǎn)品的研發(fā)過程中,不斷適應(yīng)中國市場的本地需求,并為軟件企業(yè)和各行業(yè)的信息化提供優(yōu)秀的軟件工具和咨詢服務(wù)。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。