1、lambada表达式的本质:一个匿名方法,或说是匿名委托。从C#3.0开始支持,C#2.0只支持匿名方法
语法很简单 : (输入参数)=>expr //当参数为一个是可以省略括号。
lambada表达式是由匿名方法简化而来:
delegate in 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表达式,要注意的点就是 返回的类型和参数必须和委托的签名保持一致。
原文:http://www.cnblogs.com/lxf1117/p/3908374.html