C# 在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
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