Lambda-C#

Lambda的存在意义就是为了简写让工作效率提升.最常见在于委托.当我只需要为委托传一个只会用一次的方法,我还要大费周章的去写那个方法嘛?有了Lambda就不用了

语句Lambda

Lambda在不同的场景下有不同的含义,但用法大同小异

(参数) => {方法体};

他的意思这些参数 用于 后面的方法体.
光看这个抽象的用法你理解不了他的真正意义,来吃点栗子

public int Plus(int a, int b) 
{
	int result;
	result = a + b;
	return result;
}

如图,这是我写的一个加法方法,而且特地用了麻烦的方式写,来模拟现实情况可能会比这个更加麻烦.
如果用lambda会变成什么情况

Func<int, int, double> TestDelegate = (a, b) => { return a + b; };

Func是一个C#提供的委托,但我们暂且忽略,我们只需要知道的是Func<int, int, int> TestDelegate创建了一个Func类型的委托,名字叫TestDelegate,委托有两个int参数和一个double返回值.
lambda和委托有着密切联系,如上面代码,就是把第一串代码简写成了

(a, b) => { return a + b; }

lambda形式省略掉了访问修饰符,返回值类型,方法名,和参数类型.
因为lambda的主要作用就是给委托传递方法,像是一个一次性方法,所以不需要访问修饰符,外部也访问不了lambda表达式.
返回值类型和参数类型全部都可以从委托那边得知是什么类型.如上例委托定义了参数1,2为int类,返回值为double类,故编译器在编译该lambda语句时会把lambda语句的参数类型和返回值类型看作是int与double.
lambda着重于方法体,连方法名也省略掉了.没有名字的方法统称匿名方法

表达式Lambda

表达式lambda就是更加简写的语句lambda,像上面的的方法只需要一个return所以可以更进一步简写成这样

Func<int, int, int> TestDelegate = (a, b) =>  a + b;

连方法体外面的括号都省了
加入有一个方法只为了打印HelloWorld连参数也可以省了

Action TestDelegate = () => Console.WriteLine("Hello World");

Action和Func一样也是微软提供的委托,他们俩用法相似,区别是Action没有返回值.
如上例,参数为空.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值