lambda演变历史

1、.NetFramework1.0  1.1  

//声明委托
public delegate void NoReturnNoPara();

//给委托赋值
NoReturnNoPara method = new NoReturnNoPara(this.DoNothing);
//执行委托
method.Invoke();

//方法
 private void DoNothing()
 {
    Console.WriteLine("***这是方法***:什么也不做");
 }

2、.NetFramework2.0  有了匿名方法、delegate关键字

 //同样的效果,比1.0更简洁了
  NoReturnWithPara method = new NoReturnWithPara(delegate (int id, string name)
  {
      Console.WriteLine($"***这是方法***:匿名方法:{id} {name}");
  });
  method.Invoke(20200316, "2020年3月16日17:02:23");

3、.NetFramework3.0   把delegate关键字去掉,增加了一个箭头goes to 也就是:=>

NoReturnWithPara method = new NoReturnWithPara((int id, string name) =>
{
    Console.WriteLine($"***这是方法***:{id} {name}");
});
method.Invoke(20200316, "2020年3月16日17:06:31");

4、可以省略参数类型,编译器的语法糖,虽然没写,编译时还是有的,根据委托推算

NoReturnWithPara method = new NoReturnWithPara((id, name) =>
{
    Console.WriteLine($"{id} {name}");
});
method.Invoke(20200316, "2020年3月16日17:13:11");

5、如果方法体只有一行,可以去掉大括号和分号,new NoReturnWithPara也可以省掉,也是语法糖,编译器自动加上

NoReturnWithPara method = (id, name) => Console.WriteLine($"{id} {name}");
method.Invoke(123, "2020年3月17日12:12:35");

6、也可以把声明的委托省掉,直接用Action和Func

Func<int, int, int> funcB = (a, b) => a + b;
int d = funcB.Invoke(10,30);
Console.WriteLine($"FuncB返回值:{d}");

可以看出来lambda就是委托

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小目标一个亿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值