1、lambda表达式简介
lambda表达式是比匿名方法更加简洁的一种匿名函数语法,是在c#3.0中引入的。
这里的匿名函数泛指lambda表达式和匿名方法。
lambda表达式包括:语句lambda和表达式lambda
2、语句lambda
@1:语句lambda是c#3.0为匿名方法提供的一种简化语法。这种语法不包括delegate关键字,但添加了lambda运算符=>。
示例:BubbleSort(items,delegate (int first ,int second){ return first >second};);
等同于
BubbleSort(items,(int first ,int second)=> { return first >second};);
@2:语句lambda允许通过“类型参数推断”来进一步简化语法。只要编译器能推断出参数类型或能将参数类型隐式转换成期望的类型,语句lambda就可以不显示声明参数的数据类型。只要语句lambda包含了一个参数类型,所有类型都要加上。如果要指定参数类型,那么指定的参数类型必须和委托类型完全匹配。
例如: BubbleSort(items,( first , second)=> { return first >second};);
@3:C#要求用一对圆括号来封闭lambda表达式的参数列表,即使是无参数的语句lambda(代表无输入参数的委托),也要输入一对空白的圆括号。例外情况:当编译器能推断出数据类型,而且只有一个输入参数时,语句lambda可以不带圆括号。
3、表达式lambda 与语句lambda的区别
语句lambda在lambda运算符的右侧有一个语句块,可含有0个或更多的语句,而表达式lambda只有一个表达式(没有return 语句 及大括号)
BubbleSort(items,(int first ,int second)=> first >second);
4、lambda运算符=>的理解
在查看含有lambda运算符的代码是,可再自己的脑海中将这个运算符替换成“用于”,“变成”或“满足......条件(用在表达式lambda是一个断言 即返回一个布尔值)”
例如: BubbleSort(items,(int first ,int second)=> { return first >second};); 中的第二个参数理解成“整数first和second用于返回first小于second的结果”
BubbleSort(items,(int first ,int second)=> first >second);中的第二个参数理解成“整数first和second满足first小于second的的条件”