Lambda 表达式

Lambda 表达式

ID:39465167

大小:41.00 KB

页数:4页

时间:2019-07-04

Lambda 表达式_第1页
Lambda 表达式_第2页
Lambda 表达式_第3页
Lambda 表达式_第4页
资源描述:

《Lambda 表达式》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Lambda表达式“Lambda表达式”是一个匿名函数,它可以包含表达式和语句,并且可用于创建委托或表达式目录树类型。所有Lambda表达式都使用Lambda运算符=>,该运算符读为“goesto”。该Lambda运算符的左边是输入参数(如果有),右边包含表达式或语句块。Lambda表达式x=>x*x读作“xgoestoxtimesx”。类型  可以将此表达式分配给委托类型,如下所示:  delegateintdel(inti);  delmyDelegate=x=>{returnx*x;};  intj=myDelegate(5);//j=25  创建表达式目录树类型:  us

2、ingSystem.Linq.Expressions;  //...  Expression=x=>x*x;  =>运算符具有与赋值运算符(=)相同的优先级,并且是右结合运算符。  Lambda用在基于方法的LINQ查询中,作为诸如Where和Where等标准查询运算符方法的参数。  使用基于方法的语法在Enumerable类中调用Where方法时(像在LINQtoObjects和LINQtoXML中那样),参数是委托类型System..::.Func<(Of<(T,TResult>)>)。使用Lambda表达式创建委托最为方便。例如,当您在System.Linq..:

3、:.Queryable类中调用相同的方法时(像在LINQtoSQL中那样),则参数类型是System.Linq.Expressions..::.Expression,其中Func是包含至多五个输入参数的任何Func委托。同样,Lambda表达式只是一种用于构造表达式目录树的非常简练的方式。尽管事实上通过Lambda创建的对象的类型是不同的,但Lambda使得Where调用看起来类似。  在前面的示例中,请注意委托签名具有一个int类型的隐式类型输入参数,并返回int。可以将Lambda表达式转换为该类型的委托,因为该表达式也具有一个输入参数(x),以及一个编译器可隐式

4、转换为int类型的返回值。(以下几节中将对类型推理进行详细讨论。)使用输入参数5调用委托时,它将返回结果25。  在is或as运算符的左侧不允许使用Lambda。  适用于匿名方法的所有限制也适用于Lambda表达式。有关更多信息,请参见匿名方法(C#编程指南)。 下列规则适用于Lambda表达式中的变量范围:  捕获的变量将不会被作为垃圾回收,直至引用变量的委托超出范围为止。  在外部方法中看不到Lambda表达式内引入的变量。  Lambda表达式无法从封闭方法中直接捕获ref或out参数。  Lambda表达式中的返回语句不会导致封闭方法返回。  Lambda表达式不能包含

5、其目标位于所包含匿名函数主体外部或内部的goto语句、break语句或continue语句。Lambda表达式表达式在右边的Lambda表达式称为“Lambda表达式”。Lambda表达式在构造表达式树(C#和VisualBasic)时广泛使用。Lambda表达式返回表达式的结果,并采用以下基本形式:(inputparameters)=>expression只有在Lambda有一个输入参数时,括号才是可选的;否则括号是必需的。两个或更多输入参数由括在括号中的逗号分隔:(x,y)=>x==y有时,编译器难于或无法推断输入类型。如果出现这种情况,您可以按以下示例中所示方式显式指定类型

6、:(intx,strings)=>s.Length>x使用空括号指定零个输入参数:()=>SomeMethod()在上一个示例中,请注意Lambda表达式的主体可以包含方法调用。但是,如果要创建将在另一个域(比如SQLServer)中使用的表达式树,则不应在Lambda表达式中使用方法调用。方法在.NET公共语言运行时上下文的外部将没有意义。Lambda语句Lambda语句与Lambda表达式类似,只是语句括在大括号中:(inputparameters)=>{statement;}Lambda语句的主体可以包含任意数量的语句;但是,实际上通常不会多于两个或三个语句。delegat

7、evoidTestDelegate(strings);…TestDelegatemyDel=n=>{strings=n+""+"World";Console.WriteLine(s);};myDel("Hello");像匿名方法一样,Lambda语句无法用于创建表达式树。带有标准查询运算符的Lambda许多标准查询运算符都具有输入参数,其类型是泛型委托的Func系列的其中之一。Func委托使用类型参数定义输入参数的数目和类型,以及委托的

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。