Java8的两个重大改变,一个是Lambda表达式,另一个就是Stream API表达式。Stream 是Java8中处理集合的关键抽象概念,它可以对集合进行非常复杂的查找、过滤、筛选等操作,在新版的JPA【连接数据库】中,也已经加入了Stream
本次分享主要是Lambda表达式:
Lambda 表达式(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。Lambda表达式可以表示闭包(注意和数学传统意义上的不同)。
1.C#的Lambda 表达式都使用 Lambda 运算符 =>,该运算符读为“goes to”。语法如下:
(object argOne, object argTwo) => {
; /*Your statement goes here*/}
函数体多于一条语句的可用大括号括起
类型
可以将此表达式分配给委托类型,如下所示:
delegate int del(int i);
del myDelegate=x=>{
return x*x;};
int j = myDelegate(5); //j=25
创建表达式目录树类型:
using System.Linq.Expressions;
//...
Expression <del>=x=>x*x;
=> 运算符具有与赋值运算符 (=) 相同的优先级,并且是右结合运算符。
Lambda 用在基于方法的 LINQ 查询中,作为诸如 Where 和 Where 等标准查询运算符方法的参数
!!!!在 is 或 as 运算符的左侧不允许使用 Lambda。
下列规则适用于 Lambda 表达式中的变量范围: