Lambda表达式的由来

时间:2023-11-21 08:19:14

1、lambada表达式的本质:一个匿名方法,或说是匿名委托。从C#3.0开始支持,C#2.0只支持匿名方法
语法很简单 : (输入参数)=>expr   //当参数为一个是可以省略括号。
lambada表达式是由匿名方法简化而来:
delegate int MyDeg(int)
MyDeg md= delegate (int a){ return a+1;} //匿名方法
MyDeg md=(int a)=>{return a+1;} //lambada表达式第一步简化  把匿名方法表达式中的 delegate关键字去掉 在参数和方法体之间加入 => lambda运算符 读作goes to
MyDeg md=(a)=>{return a+1;}   //编译器可以从委托的声明中知道委托的类型  从而可以再简化 省去参数类型(即使用 隐式类型)
MyDeg md= a=>{return a+1;} // 如果lambda表达式的参数只有一个 可以省略圆括号
MyDeg md=a=> a+1 ;  lambda表达式的方法主题可以是语句块或表达式,如果是一个只包含一条return 表达式的语句块 ,可以将语句块替换为 return 关键字后面的表达式。

备注:

当参数是委托时,我们可以传委托、匿名方法、Lambda表达式,要注意的点就是  返回的类型和参数必须和委托的签名保持一致。