委托和事件(14)——Lambda表达式(1)——Lambda

ProcessStringDelegate p = (s) => { Console.WriteLine(s); };

lambda方式使用Filter 委托,非常漂亮:

IEnumerable<int> values2 = Filter(values, i=>i>0);

Lambda语法详解:s为参数列表,不需要标注类型,因为变量声明中类型已经说明了。=>后的大括号是方法体

如果方法有返回值,并且代码只有一行可以简写i=>i>0,等价于i=>{return i>0;}。

有了lambda代码写的可以更简单。linq、asp.net MVC中用的非常多。

附加:

1. 对lambda的初步理解:可以看成是匿名函数的另外一种写法。

2. lambda能够根据委托推断出参数的类型,所以比匿名函数更简单。

例1:

            //=====匿名函数=====
            //f指向匿名函数
            //delegate(参数列表){//方法体}
            FilterDelegate f = delegate(string s1)
            {
                Console.WriteLine(s1);
                return false;
            };
            f("hello");

            //======lambda======
            //能够根据委托推断出参数的类型,所以比匿名函数更简单
            FilterDelegate f1 = (s1) => {
                Console.WriteLine("匿名{0}",s1);
                return false;
            };
            f1("wow");

            //====更简单的简化方法=====
            FilterDelegate f = (s1) => { return s1 == "tom"; };

            //======更简化=======
            //如果lambda表达式中的匿名函数的方法体如果只有一句话,并且
            //是返回值,那么可以省略{}以及return,就把=>后的表达式做为返回值
            FilterDelegate f = (s1) => s1 == "tom";  //这是最简化的lambda表达式。平时一般都是用这个写法。

            Console.WriteLine(f("tom"));

例2:这是一个lambda表达式的应用例子:有一个int类型的数组,要求每个数组元素乘以2后输出。

            int[] values = { 3,5,9,8,9,-3,-5};
            foreach (int i in values.Select(i => i * 2))
            {
                Console.WriteLine(i);
            }

            //=====返回所有的偶数=====
            foreach (int i in values.Where(i=>i%2==0))
            {
                Console.WriteLine(i);
            }

            //======实现排序======
            foreach (int i in values.OrderBy(i => i))
            {
                Console.WriteLine(i);
            }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值