Lambda表达式的入门经验

最近看了一些C#的视频教程,偶有一点小心得,写出来大家分享一下。

首先是委托的一些匿名方法

例子:

 class Program
    {

        static int Test1(int arg1, int arg2)
        {
            return arg1 + arg2;
        }
        static void Main(string[] args)
        {
            //Func<int, int, int> plus = Test1; 
            //修改为匿名方法的实行
            Func<int, int, int> plus = delegate(int arg1, int arg2) { return arg1 + arg2; };
            //匿名方法,本质上是一个方法,只是没有名字,任何使用委托变量的地方 都可以使用匿名方法赋值
                Console.ReadKey();
        }
    }

上面两种函数的命名方法实际上是同一种方法。总结起来就是,利用delegate隐藏函数名,将(参数){返回值}补全,这样可以起到匿名的作用,但是匿名的方法无法通过方法名调用,只能继续采用匿名的方式进行书写。

我们发现这种方法并不能对我们的工作产生便利,而且这样使用匿名的方式也太繁琐了,所以采用lambda表达式用来代替匿名方法,所以一个lambda表达式也是定义了一个方法。

例:

 class Program
    {
        static void Main(string[] args)
        {
            //Func<int, int, int> plus = delegate(int arg1, int arg2)
            //{
            //    return arg1 + arg2;
            //};
            //Func<int, int, int> plus = (arg1, arg2) =>//lambda表达式的参数是不需要使用类型的。
            //{
            //    return arg1 + arg2;
            //};
            //Console.WriteLine(plus(90,60));
            Func<int, int> Test2 = a => a + 1;//如果lambda表达式中只有一个参数可以不加上(),当函数体的语句只有一句的时候,我们可以不加上{}大括号,也可以不加上return语句
            Func<int, int> Test3 = (a) => { return a + 1; };

            Console.WriteLine(Test2(34));
            Console.WriteLine(Test3(34));
            Console.ReadKey();
        }
    }

大家可以发现Lambda表达式就是一个=>符号,用来表示前面()中的参数通过它后面{}中的方法进行操作。同时lambda表达式也存在一些更简便的写法。(见注释,这里就不再啰嗦了!)上面例子运行起来大家会发现Test2和Test3返回的结果是一样的,同样也印证了我们Lambda表达式的一些简单用法。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值