日期:2014-05-20 浏览次数:20810 次
lamda表达式让很多新同学头疼,很多人问我到底是啥。
今天就写个博客给大家从零开始解释一下。(前提知识--委托)
//委托变量 Func<int, int, int> func = (a, b) => a + b; //计算2+3的值 Console.WriteLine(func(2,3)); Console.ReadKey();输出:5
//其中//(a, b) => a + b;//这个lamda表达式等同于下面的方法static int Add(int a,int b){return a+b;}//说到这里的时候 ,群里的小盆友说他看懂了,所以我就继续往下说,稍稍深入一点。继续看下面的代码
static void Main(string[] args) { //加法 Func<int, int, int> func = (a, b) => a + b; //乘法 Func<int, int, int> func1 = (a, b) => a * b; var result = Cal(func, 2, 3); var re = Cal(func1, 4, 6); Console.WriteLine("加法" + result); Console.WriteLine("乘法" + re); Console.ReadKey(); } //计算 用委托作为参数传入,根据传入的委托来计算a和b,并返回结果。 static int Cal(Func<int, int, int> func, int a, int b) { return func(a, b); }
//到了这一步就可以继续改写了。
static void Main(string[] args) { var result = Cal((a, b) => a + b, 2, 3);//直接用lamda表达式 var re = Cal((a, b) => a * b, 4, 6);//直接用lamda表达式 Console.WriteLine("加法" + result); Console.WriteLine("乘法" + re); Console.ReadKey(); } //计算 用委托作为参数传入,根据传入的委托来计算a和b,并返回结果。 static int Cal(Func<int, int, int> func, int a, int b) { return func(a, b); }
//两个计算方式对比一下。可以知道,方法作为委托被传进了Cal方法内,然后被调用//在linq中,运用的lamda表达式,原理跟这个是一样的。把委托传入linq的扩展方法内,在方法内部调用。