C# 在C语言中创建常量表达式#

C# 在C语言中创建常量表达式#,c#,lambda,expression,expression-trees,C#,Lambda,Expression,Expression Trees,有没有办法在C#中创建一个表达式,它返回一个常量值,但也有一个参数 使用代码,它看起来像 var expression = x => 5 ParameterExpression param = Expression.Parameter(typeof(double), "parameter"); ConstantExpression constant = Expression.Constant(0.0); var expression = Expression.SomeMagic(pa

有没有办法在C#中创建一个表达式,它返回一个常量值,但也有一个参数

使用代码,它看起来像

var expression = x => 5  
ParameterExpression param = Expression.Parameter(typeof(double), "parameter");
ConstantExpression constant = Expression.Constant(0.0);
var expression = Expression.SomeMagic(param, constant);
Expression.Lambda<Func<double, double>>(expression);
所以它应该匹配
表达式
类型

它可能看起来像

var expression = x => 5  
ParameterExpression param = Expression.Parameter(typeof(double), "parameter");
ConstantExpression constant = Expression.Constant(0.0);
var expression = Expression.SomeMagic(param, constant);
Expression.Lambda<Func<double, double>>(expression);
ParameterExpression param=Expression.Parameter(typeof(double),“Parameter”);
恒常压力常数=表达式常数(0.0);
var expression=expression.SomeMagic(参数,常量);
Lambda(表达式);

将参数传递到Expression.Lambda()中:

所以你在寻找这样的东西:

ParameterExpression param = Expression.Parameter(typeof(double), "parameter");
ConstantExpression constant = Expression.Constant(0.0);

var expression = // build the body ...


Expression.Lambda<Func<double, double>>(expression, param);
ParameterExpression param=Expression.Parameter(typeof(double),“Parameter”);
恒常压力常数=表达式常数(0.0);
var expression=//构建主体。。。
Lambda(表达式,参数);
要返回相同的参数,它将非常简单:

ParameterExpression param = Expression.Parameter(typeof(double), "parameter");

Expression.Lambda<Func<double, double>>(param, param);
ParameterExpression param=Expression.Parameter(typeof(double),“Parameter”);
Lambda(param,param)表达式;
要返回常量值,请执行以下操作:

ParameterExpression param = Expression.Parameter(typeof(double), "parameter");
ConstantExpression constant = Expression.Constant(0.0);

Expression.Lambda<Func<double, double>>(constant, param);
ParameterExpression param=Expression.Parameter(typeof(double),“Parameter”);
恒常压力常数=表达式常数(0.0);
表达式λ(常数,参数);

您希望使用什么魔法?你有参数,你有lambda的主体,你知道如何把这两件事放在一起,你还需要什么?为什么不返回一个硬编码的lambda(可能在一个闭包中,这样你就可以参数化它?)Expression类有一些方法来组合其他表达式,我只是不知道,我应该使用什么方法来获得
x=>5
,不是
()=>5