最近看架構師用Lambda表達式很舒服,很簡潔,於是抽空看了下,其實很簡單的
目錄:
1.匿名方法
2.匿名方法與Lambda區別
3.使用Lambda表達式
開始學習啦。。。。。。。
一,匿名方法
有些方法很少被委托以外的任何程序調用,從生產效率來講,手工定義一個這樣的方法有點繁瑣,不是很受歡迎,為了解決這個
情況。現在可以在事件注冊時直接將一個委托與一段代碼相關聯,這種代碼的正式名稱為匿名方法。
示例:
List<int> list = new List<int>();
list.AddRange(new int[] { 20, 1, 4, 8, 9, 44 });
List<int> evenNumber = list.FindAll(delegate(int i)
{
return (i % 2) == 0;
});
二,匿名方法與Lambda區別
C#支持內聯處理事件,通過直接把一段代碼語句賦給事件(使用匿名方法),而不是構建被低層委托調用的獨立方法,Lambda表
達式只是用更簡潔的方式來寫匿名方法,徹底簡化了對委托類型的使用。
三,使用Lambda表達式
由於該表達式過於簡單,所以直接奉上示例:

namespace LambdaTest { class Program { static void Main(string[] args) { //Lambda表達式測試 TraditionalDelegateSyntax(); Console.Read(); } static void TraditionalDelegateSyntax() { List<int> list = new List<int>(); list.AddRange(new int[] { 20, 1, 4, 8, 9, 44 }); //方法一,定義相同類型的委托實例,作為傳遞參數 //Predicate<int> anonymousFun = new Predicate<int>(IsEvenNumber); //方法二,Predicate<int>委托接受一個同樣簽名的函數 //List<int> evenNumber = list.FindAll(IsEvenNumber); //方法三,匿名函數的方式 支持C#內聯處理事件 //List<int> evenNumber = list.FindAll(delegate(int i) //{ // return (i % 2) == 0; //}); //方法四,Lambda表達式 比匿名函數更簡潔 //lamdba表達式的語法 (參數1,參數2,...)=>{處理語句} 如果沒有參數表達式則為:()=>{處理語句} List<int> evenNumber = list.FindAll(i => (i % 2) == 0); //方法2輔助 //Predicate<int> anonymousFun=IsEvenNumber; //List<int> evenNumber = list.FindAll(anonymousFun); foreach (var number in evenNumber) { Console.WriteLine(number); } } static bool IsEvenNumber(int i) { return (i%2)==0; } } }