你问的是lambdaexpression吧。它是C#中的一种匿名函数式。
Lambda运算式」(LambdaExpression)是一种匿名函式,它可以包含运算式和陈述式(Statement),而且可以用来建立委派(Delegate)或运算式树状架构型别。
所有的Lambda运算式都会使来自用Lambda运算子=>,360问答意思为「移至」。Lambda看第磁专行项略搞信创乱运算子的左边会指定输入参数(如解间就依府路它果存在),右边则包含运算式或陈述式区块。Lambda运相算式x=>x*x的意思是「x移至x乘以x」。这个运算式可以指派成委派型别(DelegateType),如下所示:
复制程式码
delegateintdel(inti);
delmyDelegate=x=>x*x;
i晚父些ntj=myDeleg境马没住目欢术苏影注草ate(5);//j=25
若要建立运算式树状架构型别:
复制程式码
using***.linq.Expressions;
//...
Expression=x=>x*x;
=>运算子具有再求基月吸与指派运算子(=)相同的优先顺序,而且是右向关联的。
在方法架构LINQ查资病设官伤酒滑询中,Lambda会用来做为Where和Where等类标准查询运算子方法的引数。
当您某钢船破零限光示斯使用方法架构语法呼叫Enum迫学火带离erable类别中的Where方法时(就像是在LINQtoObjects和LINQto谈送威胶续述周XML中),此参数就会是委派并增厚型别System..::距岁读必原.Func<(Of<(T,TResult>)>)。Lambda运算式是建立委派的最便利方式。例如,当您在***.linq..::.Queryable类别中呼叫相同方法时(就像是在LINQtoSQL中的方式),参数型别就会是***.linq.Expressions..::.Expression
在上一个范例中,请注意委派签章具有一个型别为int的隐含型别输入参数,而且会传回int。因为Lambda运算式也有一个输入参数(x),以及可由编译器(Compile异裂促呀宗真r)隐含转换为int型别的传回值,所以Lambd继财并至a运算式可以转换为该型别的委派(型别推乱翻占张参配心能回断将於下列各节中详细讨论)。当使用输入参数5叫用(Invoke)委派时,便会传回25的结果。
Lambda不允许出现在i刻s或as运算子的左边。