欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#中的匿名方法實(shí)例解析

 更新時(shí)間:2014年09月03日 16:13:13   投稿:shichen2014  
這篇文章主要介紹了C#中的匿名方法,包括其由來(lái)、定義及用法等,需要的朋友可以參考下

本文較為詳細(xì)的講述了C#中的匿名方法,并附上實(shí)例加以說(shuō)明?,F(xiàn)將其分享給大家供大家參考之用。具體分析如下:

首先,C#中的匿名方法是在C#2.0引入的,它終結(jié)了C#2.0之前版本聲明委托的唯一方法是使用命名方法的時(shí)代。雖然在 C# 3.0 及更高版本中,Lambda 表達(dá)式取代了匿名方法,作為編寫(xiě)內(nèi)聯(lián)代碼的首選方式。但是,匿名方法的信息同樣也適用于 Lambda 表達(dá)式,可以說(shuō) Lambda 表達(dá)式就是匿名方法演變過(guò)來(lái)的。

我們可以使用匿名方法來(lái)忽略參數(shù)列表。 這意味著匿名方法可轉(zhuǎn)換為具有各種簽名的委托,而這對(duì)于 Lambda 表達(dá)式來(lái)說(shuō)是不可能的。 學(xué)好匿名方法,才能更加深刻地理解好 Lambda 表達(dá)式。

在說(shuō)匿名方法的使用之前,先來(lái)說(shuō)說(shuō)匿名方法的其他叫法。匿名方法也有人叫匿名委托、匿名函數(shù),雖然現(xiàn)在普遍通用,但是還是有點(diǎn)區(qū)別的。msdn官網(wǎng)上說(shuō):要將代碼塊傳遞為委托參數(shù),創(chuàng)建匿名方法則是唯一的方法。這里的匿名方法就是官方的說(shuō)法,而因?yàn)槟涿椒ň褪菫榱藢⒋a塊傳遞為委托參數(shù),因此也有人叫匿名委托,包括筆者也喜歡這種稱呼,我覺(jué)得這樣叫通俗易懂。至于匿名函數(shù),因?yàn)镃#中“方法”(Method)的概念有些語(yǔ)言叫“函數(shù)”(Function),因此匿名方法也被人叫做匿名函數(shù)。然而在msdn文檔介紹中匿名函數(shù)包括了Lambda 表達(dá)式和匿名方法,可以說(shuō)匿名函數(shù)是更高的一級(jí),所以說(shuō)最官方的叫法還是匿名方法,當(dāng)然其他的叫法流傳也甚廣,聽(tīng)得懂就行了,沒(méi)必要糾結(jié)。

接下來(lái)說(shuō)說(shuō)匿名方法的寫(xiě)法規(guī)則,先上例子:

delegate(int i) { return i > 0; }

它遵循這樣的格式書(shū)寫(xiě):

delegate(形參表){方法體代碼}

可以類比js中匿名函數(shù)的寫(xiě)法來(lái)記憶。

那么匿名方法運(yùn)用在哪里呢?怎么使用呢?當(dāng)你需要一個(gè)臨時(shí)方法,該方法使用次數(shù)極少或者你需要的這個(gè)方法的代碼很簡(jiǎn)短,那么你就可以使用匿名方法。給個(gè)簡(jiǎn)單的例子,如果需要在一個(gè)整型集合中篩選出符合條件的新集合,如下

List<int> list = new List<int>() { 1, 2, 3, 4, 5, 6 };
//假設(shè)需要從list集合中獲取大于3的所有元素以新集合返回
var newlist = newlist.FindAll(GetNewList);

GetNewList()為另外定義的和委托Predicate<T>具有同簽名的方法(Predicate<T>是系統(tǒng)內(nèi)置委托)

GetNewList()定義如下:

bool GetNewList(int i)
{
  return i > 3;
}

以上是沒(méi)有使用匿名方法時(shí)的寫(xiě)法,如果使用了匿名方法,你就會(huì)發(fā)現(xiàn)一切變得如此簡(jiǎn)便,

List<int> list = new List<int>() { 1, 2, 3, 4, 5, 6 };
var newlist = list.FindAll(delegate(int i) { return i > 3; });

通過(guò)對(duì)比,可以發(fā)現(xiàn)使用匿名方法能夠提供與先前命名方法相同的功能,但是它已經(jīng)不再需要一個(gè)在關(guān)聯(lián)到委托之前就明確創(chuàng)建的方法了,因此也減少了實(shí)例化委托所需的編碼系統(tǒng)開(kāi)銷,這就是它的最大好處。

相信本文所述對(duì)大家的C#程序設(shè)計(jì)有一定的借鑒價(jià)值。

相關(guān)文章

  • C#利用緩存分塊讀寫(xiě)大文件

    C#利用緩存分塊讀寫(xiě)大文件

    這篇文章主要為大家詳細(xì)介紹了C#利用緩存分塊讀寫(xiě)大文件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • C#導(dǎo)航器Xpath與XPathNavigator類

    C#導(dǎo)航器Xpath與XPathNavigator類

    這篇文章介紹了C#導(dǎo)航器Xpath與XPathNavigator類,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • C#實(shí)現(xiàn)接口base調(diào)用示例詳解

    C#實(shí)現(xiàn)接口base調(diào)用示例詳解

    這篇文章主要為大家介紹了C#實(shí)現(xiàn)接口base調(diào)用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • C#計(jì)算兩個(gè)時(shí)間差的方法代碼分享

    C#計(jì)算兩個(gè)時(shí)間差的方法代碼分享

    做項(xiàng)目需要用到計(jì)算時(shí)間差,就整理出來(lái)供有需要的朋友參考一下
    2013-12-12
  • C#實(shí)現(xiàn)文件壓縮與解壓功能的示例代碼

    C#實(shí)現(xiàn)文件壓縮與解壓功能的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用C#實(shí)現(xiàn)文件壓縮與解壓功能,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,需要的可以參考一下
    2023-05-05
  • C# 字符串、數(shù)組和List的截取和轉(zhuǎn)換實(shí)例

    C# 字符串、數(shù)組和List的截取和轉(zhuǎn)換實(shí)例

    下面小編就為大家分享一篇C# 字符串、數(shù)組和List的截取和轉(zhuǎn)換實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • C# DataTable的詳細(xì)用法分享

    C# DataTable的詳細(xì)用法分享

    在項(xiàng)目中經(jīng)常用到DataTable,如果DataTable使用得當(dāng),不僅能使程序簡(jiǎn)潔實(shí)用,而且能夠提高性能,達(dá)到事半功倍的效果,現(xiàn)對(duì)DataTable的使用技巧進(jìn)行一下總結(jié)
    2013-11-11
  • C#求解哈夫曼樹(shù),實(shí)例代碼

    C#求解哈夫曼樹(shù),實(shí)例代碼

    C#求解哈夫曼樹(shù),實(shí)例代碼,需要的朋友可以參考一下
    2013-04-04
  • c#獲取兩個(gè)特定字符之間的內(nèi)容并輸出的方法

    c#獲取兩個(gè)特定字符之間的內(nèi)容并輸出的方法

    今天小編就為大家分享一篇c#獲取兩個(gè)特定字符之間的內(nèi)容并輸出的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • C#實(shí)現(xiàn)希爾排序

    C#實(shí)現(xiàn)希爾排序

    這篇文章介紹了C#實(shí)現(xiàn)希爾排序的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04

最新評(píng)論