1. 程式人生 > >C#中的匿名方法實例解析

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

鏈接 而在 說明 程序設計 renren thum ont 好處 pre

本文較為詳細的講述了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#程序設計有一定的借鑒價值。

除聲明外,跑步客文章均為原創,轉載請以鏈接形式標明本文地址
C#中的匿名方法實例解析

本文地址: http://www.paobuke.com/develop/c-develop/pbk23560.html






相關內容

技術分享C#創建SQLite控制臺應用程序詳解技術分享C#中ToString數據類型格式大全(千分符)技術分享C# 實現QQ式截圖功能實例代碼技術分享C#如何解析http報文
技術分享C#畫筆Pen繪制光滑模式曲線的方法技術分享C#控制臺進行文件讀寫的方法技術分享C#實現毫秒轉換成時分秒的方法技術分享C#為配置文件加密的實現方法

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