C#9的Lambda升級(jí)了哪些特性

本篇內(nèi)容主要講解“C#9的Lambda升級(jí)了哪些特性”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“C#9的Lambda升級(jí)了哪些特性”吧!

公司主營(yíng)業(yè)務(wù):網(wǎng)站設(shè)計(jì)制作、網(wǎng)站制作、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶(hù)真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)公司是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶(hù)帶來(lái)驚喜。創(chuàng)新互聯(lián)公司推出棗莊免費(fèi)做網(wǎng)站回饋大家。

C# 9 的 Lambdas 將會(huì)有一個(gè)小的升級(jí),包含兩個(gè)新特性。這兩個(gè)新特性都不會(huì)改變代碼的編寫(xiě)方式,但都體現(xiàn)了開(kāi)發(fā)人員的意圖。

Lambda 丟棄參數(shù)允許開(kāi)發(fā)人員顯式指定某些參數(shù)是不需要的,這樣可以防止編譯器對(duì)未使用的參數(shù)發(fā)出錯(cuò)誤警告。事件處理器就可能出現(xiàn)這種情況,因?yàn)槭录幚砥饔锌赡懿恍枰腊l(fā)送方是誰(shuí),有不需要知道對(duì)象參數(shù)是什么。

button1.Click += (s, e) => ShowDialog();

通過(guò)替換參數(shù),很容易就知道變量未被使用。

button1.Click += (_, _) => ShowDialog();

如果有必要,可以使用類(lèi)型。

var handler = (object _, EventArgs _) => ShowDialog();

靜態(tài)匿名函數(shù)可作為無(wú)法捕捉本地變量(包括參數(shù))的Lambda 或匿名函數(shù)。下面這個(gè)示例來(lái)自 最初的提議。

 int y = 10; someMethod(x => x + y); // 捕捉 'y', 導(dǎo)致不必要的資源分配.

在 C#中,引用本地變量的匿名函數(shù)需要分配一個(gè)臨時(shí)對(duì)象。本地參數(shù)會(huì)被移出方法,并移入到對(duì)象中,在當(dāng)前執(zhí)行的函數(shù)結(jié)束后,它將繼續(xù)存在。這是必要的,因?yàn)槟涿瘮?shù)存在的時(shí)間可能比創(chuàng)建它的函數(shù)要長(zhǎng)。

通過(guò)添加 static 關(guān)鍵字來(lái)表明匿名函數(shù)阻止這種內(nèi)存分配。

int y = 10; someMethod(static x => x + y); // 錯(cuò)誤!

為了修復(fù)這個(gè)錯(cuò)誤,需要將變量 y 改成常量或靜態(tài)字段。

const int y = 10; someMethod(static x => x + y); // 好了 :-)

以下是該特性的主要規(guī)則:

  • 靜態(tài)匿名函數(shù)無(wú)法從包含作用域捕獲到狀態(tài)。因此,局部變量、參數(shù)和包含作用域內(nèi)的參數(shù)在靜態(tài)匿名函數(shù)中是不可用的。

  • 靜態(tài)匿名函數(shù)無(wú)法通過(guò)隱式或顯式 this 或 base 引用來(lái)引用實(shí)例成員。

  • 靜態(tài)匿名函數(shù)可以引用包含作用域內(nèi)的靜態(tài)成員。

  • 靜態(tài)匿名函數(shù)可以引用包含作用域內(nèi)的常量定義。

  • 在靜態(tài)匿名函數(shù)中的 nameof() 可以引用包含作用域內(nèi)的局部變量、參數(shù),或者 this 或 base 函數(shù)。

到此,相信大家對(duì)“C#9的Lambda升級(jí)了哪些特性”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢(xún),關(guān)注我們,繼續(xù)學(xué)習(xí)!

新聞標(biāo)題:C#9的Lambda升級(jí)了哪些特性
當(dāng)前鏈接:http://muchs.cn/article4/ihjpie.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開(kāi)發(fā)、網(wǎng)站改版、面包屑導(dǎo)航、App開(kāi)發(fā)、微信小程序虛擬主機(jī)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化