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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > C# >内容正文

C#

C# 8小特性

發(fā)布時(shí)間:2024/4/17 C# 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# 8小特性 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

對(duì)于C# 8,有吸引了大多數(shù)注意力的重大特性,如默認(rèn)接口方法和可空引用,也有許多小特性被考慮在內(nèi)。本文將介紹幾例可能加入C#未來版本的小特性。

\\

新的賦值運(yùn)算符:\u0026amp;\u0026amp;=和||=

\\

從第一個(gè)版本開始,C#就支持把等號(hào)和另外一種運(yùn)算符合在一起的語法。這幾乎包括除短路布爾運(yùn)算符\u0026amp;\u0026amp;和||之外的所有的二元操作符(如+、-、\u0026amp;等)。“賦值運(yùn)算符\u0026amp;\u0026amp;=和||=”提案是對(duì)這個(gè)列表的補(bǔ)充。

\\

逐字內(nèi)插字符串

\\

逐字字符串以@\"開頭。內(nèi)插字符串使用$\"。但是,如果你想要一個(gè)既逐字又內(nèi)插的字符串呢?是用@$\"還是$@\"?目前,其中一個(gè)有效,另一個(gè)會(huì)報(bào)編譯器錯(cuò)誤,但是,人們通常很難記住哪個(gè)是哪個(gè)。

\\

在一個(gè)名為“逐字插入字符串”的中肯提案中,該語法將得到擴(kuò)展,接受@$\"。對(duì)它的解釋將和逐字插入字符串($@\")完全相同,因此,你再也不用擔(dān)心弄反了。

\\

關(guān)于這項(xiàng)修改,存在一些小爭(zhēng)議,因?yàn)橛腥苏J(rèn)為這沒有必要或者會(huì)導(dǎo)致不一致。

\\

允許using語句結(jié)構(gòu)匹配IDisposable

\\

接口與C#編譯器之間存在著奇怪的關(guān)系。經(jīng)常,你不必為了使用一個(gè)語言特性而真正實(shí)現(xiàn)一個(gè)具體的抽象接口;你只需在類似抽象接口的類上創(chuàng)建一個(gè)公開的API。

\\

典型的例子是“foreach”和IEnumerable。如果類有一個(gè)方法GetEnumerator,返回一個(gè)包含Current屬性和MoveNext方法的對(duì)象,那么你就可以使用foreach。實(shí)際的返回類型不重要,這使得List\u0026lt;T\u0026gt;這樣的類似可以實(shí)現(xiàn)更快速的枚舉器。這通常稱為“結(jié)構(gòu)匹配(structural matching)”。

\\

在這個(gè)提案中,using語句也將支持結(jié)構(gòu)匹配。這乍看之下沒什么用,因?yàn)槟悴粫?huì)希望看到一個(gè)可釋放類沒有實(shí)現(xiàn)IDisposable。不過,有一種名為ref struct的新類型。它們不能實(shí)現(xiàn)接口,因此,如果沒有這項(xiàng)提案,你在使用它們時(shí)就無法使用using語句。

\\

和foreach與using共用的擴(kuò)展方法

\\

這個(gè)提案是前述提案的補(bǔ)充,是為了能夠把GetEnumerator或Dispose作為擴(kuò)展方法添加,并且可以分別和“foreach”或“using”共用。再次,我們談?wù)摰倪@項(xiàng)特性僅用于非常特殊的情況。例如,你可以從第三方庫(這可能是調(diào)用Marshal.ReleaseComObject的好地方)向一個(gè)COM對(duì)象添加一個(gè)Dispose擴(kuò)展方法。

\\

這還不是一個(gè)正式的提案,可能會(huì)合并到前面提到的“using”語句修改中。

\\

“using”語句隱式作用域

\\

目前,“using”語句后面只能是一個(gè)顯式作用域(即一對(duì)花括號(hào))或者另一個(gè)“using”語句。如果這個(gè)提案通過,你就可以編寫下面這樣的代碼:

\\\using var a = new MyDisposable();\using var b = new MyDisposable();\using var c = new MyDisposable();\\\\上述每個(gè)變量都會(huì)在當(dāng)前作用域結(jié)束時(shí)以相反的順序自動(dòng)釋放。從功能上說,這和下面的代碼等價(jià),但更簡(jiǎn)潔,也不會(huì)引入新作用域。\\\using (var a = new MyDisposable())\using (var b = new MyDisposable())\using (var c = new MyDisposable())\{\ // 一些代碼\}\\\\當(dāng)需要多個(gè)可釋放對(duì)象而又不同時(shí)創(chuàng)建時(shí),這項(xiàng)修改會(huì)特別有用。你甚至可以在表達(dá)式中間創(chuàng)建可釋放對(duì)象,而且可以確信,它將在當(dāng)前作用域結(jié)束時(shí)釋放。\\\var results = myExcelReader.ReadResults(using new MyExcelSheet(excelFilePath));\\

對(duì)于這項(xiàng)提案,其中一個(gè)批評(píng)是,它與某些語句如“goto”不兼容。

\\

查看英文原文:C# 8 Small Features

總結(jié)

以上是生活随笔為你收集整理的C# 8小特性的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。