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

歡迎訪問 生活随笔!

生活随笔

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

C#

C# 9 Lambda 小幅升级

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

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

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

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

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

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

如果有必要,可以使用類型。

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

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

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

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

通過添加 static 關(guān)鍵字來表明匿名函數(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ù)無法從包含作用域捕獲到狀態(tài)。因此,局部變量、參數(shù)和包含作用域內(nèi)的參數(shù)在靜態(tài)匿名函數(shù)中是不可用的。

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

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

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

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

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的C# 9 Lambda 小幅升级的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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