Lambda表达式

Lambda表达式

介绍

Lambda表达式是一种可用于创建委托表达式目录树类型的匿名函数。通过使用Lambda表达式,可以写入可作为参数传递或作为函数调用值返回的本地函数。Lambda表达式对于编写LINQ查询表达式特别有用。
说白了,Lambda就是匿名函数的一种简写方式。

用法

在一个简单委托中使用

下面我将用3种方法来实现委托:

    class Program
    {
        public delegate int Sum(int a,int b);
        static void Main(string[] args)
        {
            //Lambda表达式
            Sum sum1 = (a, b) => a + b;
            //匿名函数
            Sum sum2 = delegate(int aa, int bb)
            {
                return aa + bb;
            };
            //普通委托
            Sum sum3 = caculateSum;
            int aaa = 1;
            int bbb = 2;
            Console.WriteLine("Lambda的结果:{0}", sum1(aaa, bbb));
            Console.WriteLine("匿名函数的结果:{0}", sum2(aaa, bbb));
            Console.WriteLine("普通委托的结果:{0}", sum3(aaa, bbb));
            Console.Read();
        }

        static int caculateSum(int a, int b)
        {
            return a + b;
        }
    }

在上面的代码中:
sum1是通过Lambda表达式初始化了一个委托实例;
sum2是通过匿名函数初始化了一个委托实例;
sum3是通过一个静态方法来初始化一个委托实例;
这3种方式其实表达的意思都是一样的,都将返回a+b的值,但是我们可以看到,使用Lambda表达式仅仅使用了一行代码。

在扩展方法中的使用

下面将用一个简单的扩展方法展示如何在扩展方法中使用Lambda:

List<int> ls = new List<int>()
            {
                1,2,3,4,5,6
            };

            int result=ls.Sum(a => { return (a > 3 ? a : 0); });
            Console.WriteLine(result);
            Console.Read();

运行上面的代码,将发现返回值为15,也就是说返回的是大于3的几个值的和,即4+5+6。其实这里本质上也是一个委托,只是这个扩展方法的参数是一个委托。
这里将扩展方法单独拿出来说的目的是因为,继承自Enumerable的很多类在Linq中都有很多扩展方法,这些扩展方法很多参数都有委托类型,而在调用这些扩展方法时,使用Lambda表达式的方法将会使代码变得更加精减,不过这在理解上就不是那么容易了,但是如果对Lambda表达式有所了解,这将会很清楚的理解。

Lambda表达式的语法

一般写法:

(parm1,parm2...,parmn)=>{
    //代码块
}

特殊情况:
当参数只有1个的时候,可以省略括号

parm1=>{
    //代码块
}

当函数的语句只有1个时,也可以省略大括号,但是省略后就不能加return,如果不省略就必须按标准的代码块来写。例如下面直接返回所有参数的和:

(parm1,parm2...,parmn)=>parm1+parm2+...+parmn

总结

Lambda表达式最大的有点就是简化了coding和增加了类型安全,本质上Lambda表达式就是一个匿名函数,在编译的时候,编译器将会自动将Lambda表达式转换成匿名函数。如下图:
Lambda

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值