lambda表达式的实质

lambda实际上是匿名方法。匿名方法意味着,不能直接调用,必须赋值或以参数形式传参。这就决定了,它充当临时工。如果想要重用这部分lambda表达式的操作,就必须将它赋值给委托。

很多时候lambda表达式多用在委托参数上,就是临时处理。

函数参数是代理类型的才允许lambda传参

//函数声明,参数为delegate类型
void Func(System.Action act){   
        act();
} 

void Func(System.Action<float> act){
        act();
} 

调用:

Func (() => {
			
		});
Func (speed => {
	Log.log("speed:"+speed);		
});
无返回值的lambda操作处理和函数本身的处理没有关系,仅仅是启动这个代理所要做的处理。


如果是有返回值的,则它的返回值,是由上下文自动识别的。

void Func(System.Func<bool> act){
		Log.log ("act="+act());
	}
Func (() => true);

有返回值如Func<T,TResult>带有返回值类型的参数,在函数体内调用该返回值参数,即代理是有返回值的情况下才会对函数体有影响。

目前我接触的大多数情况都是不带返回值的代理,即直接回调处理结果。

举例:

比较大小的操作

delegate int max(int a,int b);

max = (a,b)=> a > b ? a:b;

赋值以备用,代码简单明了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值