国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#中的匿名方法實例解析

2020-01-24 02:27:14
字體:
來源:轉載
供稿:網友

本文較為詳細的講述了C#中的匿名方法,并附上實例加以說明。現將其分享給大家供大家參考之用。具體分析如下:

首先,C#中的匿名方法是在C#2.0引入的,它終結了C#2.0之前版本聲明委托的唯一方法是使用命名方法的時代。雖然在 C# 3.0 及更高版本中,Lambda 表達式取代了匿名方法,作為編寫內聯代碼的首選方式。但是,匿名方法的信息同樣也適用于 Lambda 表達式,可以說 Lambda 表達式就是匿名方法演變過來的。

我們可以使用匿名方法來忽略參數列表。 這意味著匿名方法可轉換為具有各種簽名的委托,而這對于 Lambda 表達式來說是不可能的。 學好匿名方法,才能更加深刻地理解好 Lambda 表達式。

在說匿名方法的使用之前,先來說說匿名方法的其他叫法。匿名方法也有人叫匿名委托、匿名函數,雖然現在普遍通用,但是還是有點區別的。msdn官網上說:要將代碼塊傳遞為委托參數,創建匿名方法則是唯一的方法。這里的匿名方法就是官方的說法,而因為匿名方法就是為了將代碼塊傳遞為委托參數,因此也有人叫匿名委托,包括筆者也喜歡這種稱呼,我覺得這樣叫通俗易懂。至于匿名函數,因為C#中“方法”(Method)的概念有些語言叫“函數”(Function),因此匿名方法也被人叫做匿名函數。然而在msdn文檔介紹中匿名函數包括了Lambda 表達式和匿名方法,可以說匿名函數是更高的一級,所以說最官方的叫法還是匿名方法,當然其他的叫法流傳也甚廣,聽得懂就行了,沒必要糾結。

接下來說說匿名方法的寫法規則,先上例子:

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

它遵循這樣的格式書寫:

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

可以類比js中匿名函數的寫法來記憶。

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

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

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

GetNewList()定義如下:

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

以上是沒有使用匿名方法時的寫法,如果使用了匿名方法,你就會發現一切變得如此簡便,

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

通過對比,可以發現使用匿名方法能夠提供與先前命名方法相同的功能,但是它已經不再需要一個在關聯到委托之前就明確創建的方法了,因此也減少了實例化委托所需的編碼系統開銷,這就是它的最大好處。

相信本文所述對大家的C#程序設計有一定的借鑒價值。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宝山区| 绥阳县| 青田县| 新建县| 武陟县| 城步| 龙里县| 双辽市| 东乌珠穆沁旗| 长白| 邯郸市| 汉川市| 枝江市| 旬阳县| 彰化县| 南投市| 安西县| 澜沧| 西盟| 乐陵市| 肇州县| 庆阳市| 沾化县| 彭水| 陆丰市| 鲁山县| 马山县| 安新县| 那曲县| 邢台县| 宁南县| 唐山市| 安多县| 垫江县| 荃湾区| 黔江区| 饶阳县| 宜君县| 绥中县| 永德县| 平谷区|