1.0:委托
2.0:匿名函数
3.5:
Lambda表达式:是一个匿名委托,是一种高效的类似于函数式编程的表达式,也是LINQ的基础。
语法:(参数)=>{方法体/表达式/语句块}
//参数列表中的参数类型可以是明确类型或者是推断类型
//如果是推断类型,则参数的数据类型将由编译器根据上下文自动推断出来
Lambda表达式可以有多个参数、一个参数,或者没有参数。其参数类型可以隐式或者显式。示例代码如下:
- (x, y) => x * y //多参数,隐式类型=> 表达式
- x => x * 5 //单参数, 隐式类型=>表达式
- x => { return x * 5; } //单参数,隐式类型=>语句块
- (int x) => x * 5 //单参数,显式类型=>表达式
- (int x) => { return x * 5; } //单参数,显式类型=>语句块
- () => Console.WriteLine() //无参数 注:无参数必须显式写()
例(演变过程):
Func<string,int>strLength=delegate(string str){return str.Length;};//匿名委托
strLength=(string str)=>{return str.Length;};//(显式类型参数列表)=> {语句},lambda表达式最冗长版本
strLength=(string str)=>str.Length; //(显式类型参数列表)=> 表达式
strLength=(str)=>str.Length;//(隐式类型参数列表)=> 表达式
strLength=str=>str.Length;//参数名 => 表达式