首页 > 其他 > 详细

写给新接触linq的同学(二)lamda从零来理解

时间:2014-03-14 21:38:06      阅读:429      评论:0      收藏:0      [点我收藏+]


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的扩展方法内,在方法内部调用。





写给新接触linq的同学(二)lamda从零来理解,布布扣,bubuko.com

写给新接触linq的同学(二)lamda从零来理解

原文:http://blog.csdn.net/zhouqinghe24/article/details/21243273

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!