lambda 表达式.c# 编程指南

lambda 表达式.c# 编程指南

ID:18795953

大小:57.50 KB

页数:5页

时间:2018-09-24

lambda 表达式.c# 编程指南_第1页
lambda 表达式.c# 编程指南_第2页
lambda 表达式.c# 编程指南_第3页
lambda 表达式.c# 编程指南_第4页
lambda 表达式.c# 编程指南_第5页
资源描述:

《lambda 表达式.c# 编程指南》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Lambda表达式(C#编程指南)VisualStudio2010“Lambda表达式”是一个匿名函数,它可以包含表达式和语句,并且可用于创建委托或表达式树类型。所有Lambda表达式都使用Lambda运算符=>,该运算符读为“goesto”。该Lambda运算符的左边是输入参数(如果有),右边包含表达式或语句块。Lambda表达式x=>x*x读作“xgoestoxtimesx”。可以将此表达式分配给委托类型,如下所示:C#delegateintdel(inti);staticvoidMain(string[]args){delmyDelegate=x=>x*x;intj=myDelegate

2、(5);//j=25}创建表达式树类型:C#usingSystem.Linq.Expressions;namespaceConsoleApplication1{classProgram{staticvoidMain(string[]args){ExpressionmyET=x=>x*x;}}}=>运算符具有与赋值运算符(=)相同的优先级,并且是右结合运算符。Lambda在基于方法的LINQ查询中用作标准查询运算符方法(如Where)的参数。使用基于方法的语法在Enumerable类中调用Where方法时(像在LINQtoObjects和LINQtoXML中那样),参数是委托类型Sys

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

4、表达式转换为该类型的委托,因为该表达式也具有一个输入参数(x),以及一个编译器可隐式转换为int类型的返回值。(以下几节中将对类型推理进行详细讨论。)使用输入参数5调用委托时,它将返回结果25。在is或as运算符的左侧不允许使用Lambda。适用于匿名方法的所有限制也适用于Lambda表达式。有关更多信息,请参见匿名方法(C#编程指南)。Lambda表达式表达式在右边的Lambda表达式称为“Lambda表达式”。Lambda表达式在构造表达式树(C#和VisualBasic)时广泛使用。Lambda表达式返回表达式的结果,并采用以下基本形式:复制(inputparameters)=>expr

5、ession只有在Lambda有一个输入参数时,括号才是可选的;否则括号是必需的。两个或更多输入参数由括在括号中的逗号分隔:(x,y)=>x==y有时,编译器难于或无法推断输入类型。如果出现这种情况,您可以按以下示例中所示方式显式指定类型:(intx,strings)=>s.Length>x使用空括号指定零个输入参数:()=>SomeMethod()在上一个示例中,请注意Lambda表达式的主体可以包含方法调用。但是,如果要创建将在另一个域(比如SQLServer)中使用的表达式树,则不应在Lambda表达式中使用方法调用。方法在.NET公共语言运行时上下文的外部将没有意义。Lambda语句L

6、ambda语句与Lambda表达式类似,只是语句括在大括号中:(inputparameters)=>{statement;}Lambda语句的主体可以包含任意数量的语句;但是,实际上通常不会多于两个或三个语句。delegatevoidTestDelegate(strings);…TestDelegatemyDel=n=>{strings=n+""+"World";Console.WriteLine(s);};myDel("Hello");像匿名方法一样,Lambda语句无法用于创建表达式树。带有标准查询运算符的Lambda许多标准查询运算符都具有输入参数,其类型是泛型委托的Func

7、sult>系列的其中之一。Func委托使用类型参数定义输入参数的数目和类型,以及委托的返回类型。Func委托对于封装应用于一组源数据中每个元素的用户定义表达式非常有用。例如,假设有以下委托类型:publicdelegateTResultFunc(TArg0arg0)可以将委托实例化为FuncmyFunc,其中int是输入参数,

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

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

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