在 C# 中创建常量表达式

Creating a constant Expression in C#

有没有办法在 C# 中创建一个表达式,returns 一个常数值,但也有一个参数?

使用代码,它看起来像

var expression = x => 5  

所以它应该匹配 Expression<Func<double, double>> 类型。

它应该看起来像

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);

您将参数传递给 Expression.Lambda<>() :

https://msdn.microsoft.com/en-us/library/dd268052(v=vs.110).aspx

所以您正在寻找类似的东西:

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);

到return同样的参数,就这么简单:

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

Expression.Lambda<Func<double, double>>(param, param);

到 return 常量值将是:

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

Expression.Lambda<Func<double, double>>(constant, param);