C# 创建函数<&燃气轮机;动态-Lambdas与表达式树

C# 创建函数<&燃气轮机;动态-Lambdas与表达式树,c#,.net,c#-4.0,lambda,expression-trees,C#,.net,C# 4.0,Lambda,Expression Trees,下面是一些返回线性函数(y=ax+b)的代码 public static Func LinearFunc(双斜率、双偏移) { 返回d=>d*斜率+偏移量; } 我可以用表达式树做同样的事情,但我不确定这是否值得 我知道lambda将捕获参数,这是一个缺点。还有什么我不知道的优点/缺点吗 我的主要问题是,在这个场景中使用表达式树值得吗?为什么?如果您在编译时知道代码,我几乎肯定会使用lambda表达式。捕获参数(而不是将其表示为常量)这一事实几乎总是无关紧要的——为了证明构建表达式树的合理性,

下面是一些返回线性函数(y=ax+b)的代码

public static Func LinearFunc(双斜率、双偏移)
{
返回d=>d*斜率+偏移量;
}
我可以用表达式树做同样的事情,但我不确定这是否值得

我知道lambda将捕获参数,这是一个缺点。还有什么我不知道的优点/缺点吗


我的主要问题是,在这个场景中使用表达式树值得吗?为什么?

如果您在编译时知道代码,我几乎肯定会使用lambda表达式。捕获参数(而不是将其表示为常量)这一事实几乎总是无关紧要的——为了证明构建表达式树的合理性,您必须证明它是重要的

表达式树在以下情况下更适用:

  • 您希望从不同的表达式位动态构建它们
  • 您希望将表达式树作为数据进行分析,例如作为LINQ提供程序进行分析

如果不是这样,使用lambda表达式的可读性优势是巨大的。

您多久调用一次结果函数?
public static Func<double, double> LinearFunc(double slope, double offset)
{
    return d => d * slope + offset;
}