当前位置:文档之家› Lambda表达式

Lambda表达式

1.5
Expression<Func<int,bool>> exprTree = num => num < 5;
ParameterExpressionparam = (ParameterExpression)exprTree.Parameters[0];
BinaryExpressionoperation = (BinaryExpression)exprTree.Body;
Expression<Func<double>> le =mbda<Func<double>>(be);
Func<double> compiledExpression = pile();
doubleresult = compiledExpression();
Console.WriteLine(result);//得到8
}
}
delegateintdel(inti,i,其类型是泛型委托的Func<T, TResult>系列的其中之一。Func<T, TResult>委托使用类型参数定义输入参数的数目和类型,以及委托的返回类型。
Func<int,bool> myFunc = x => x == 5;
BinaryExpressionnumLessThanFive =Expression.LessThan(numParam, five);
Expression<Func<int,bool>> lambda1 =
mbda<Func<int,bool>>(
numLessThanFive,
Func<int,bool> result = pile();
Console.WriteLine(result(4));//True
Console.WriteLine(pile()(5));//False
1.7
BinaryExpressionbe =Expression.Power(Expression.Constant(2D),Expression.Constant(3D));
, , operation.NodeType, right.Value);
//得到Decomposed expression:num => num LessThan 5
1.6
Expression<Func<int,bool>> expr = num => num < 5;
boolresult = myFunc(6);//得到false
Console.WriteLine(result);
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
intoddNumbers = numbers.Count(n => n % 2 == 1);//得到5(除2取余等于1的数字个数)
Console.WriteLine(oddNumbers);
1.3
在将lambda表达式分配给Expression<TDelegate>类型的变量时,编译器将发出代码以生成一个表示lambda表达式的表达式树。
Expression<Func<int,bool>> lambda = num => num < 5;
newParameterExpression[] { numParam });
Console.WriteLine(numParam);//得到num
Console.WriteLine(five);//5
Console.WriteLine(numLessThanFive);//得到( num < 5 )
1
1.1
1.1.1
“Lambda表达式”是一个匿名函数,它可以包含表达式和语句,并且可用于创建委托或表达式树类型。
classProgram
{
staticvoidMain(string[] args)
{
delmyDelegate = x => x * x;
intj = myDelegate(5);//得到j = 25
Console.Read();
}
}
delegateintdel(inti);
classProgram
{
staticvoidMain(string[] args)
{
delmyET =newdel((x, y) => x + y);
Console.WriteLine(myET(7,8));//15
Console.Read();
Console.WriteLine(j);
Console.Read();
}
}
delegateintdel(inti);
classProgram
{
staticvoidMain(string[] args)
{
Expression<del> myET = x => x * x;
Console.WriteLine(myET);//得到x => ( x * x )
Console.WriteLine(lambda);//得到num =>( num < 5 )
1.4
ParameterExpressionnumParam =Expression.Parameter(typeof(int),"num");
ConstantExpressionfive =Expression.Constant(5,typeof(int));
ParameterExpressionleft = (ParameterExpression)operation.Left;
ConstantExpressionright = (ConstantExpression)operation.Right;
Console.WriteLine("Decomposed expression: {0} => {1} {2} {3}",
相关主题