我第一次探索表达式树。我有一些基本的疑问。C表达式树#
所以基本上,表达式只需要一个lambda表达式。然后,我们可以将lambda表达式编译()为MSIL代码,MSIL代码又返回一个通用委托。我们可以照原样调用返回的委托。我的理解是否正确?
如果它是在这里就是我想实现:((10*5)+(9/4))
BinaryExpression b1 = Expression.MakeBinary(ExpressionType.Multiply, Expression.Constant(10), Expression.Constant(5));//(10*5)
BinaryExpression b2 = Expression.MakeBinary(ExpressionType.Divide, Expression.Constant(9), Expression.Constant(4));//(9/4)
BinaryExpression b4 = Expression.MakeBinary(ExpressionType.Add, b1, b2);//((10*5)+(9/4))
所以在这一点上,我们已经取得了lambda expression body
。现在把它变成一个full lambda expression
我们需要调用
Console.WriteLine(Expression.Lambda<Func<int, int>>(b4).Compile());
我没有得到这部分。这也不起作用。
为什么这Func<int,int>
?
它是否像内部表达式将只需要int作为参数,整个表达式将返回一个int?
显然这是行不通的。生成的lambda如何看起来像?
我得到整个图片?如何使这项工作?
*这不也行*,它有什么作用?它会给你一个错误?什么错误? –