5

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

public static Func<double, double> LinearFunc(double slope, double offset)
{
    return d => d * slope + offset;
}

我可以用表达式树做同样的事情,但我不确定这是否值得。

我知道 lambda 会捕获参数,这是一个缺点。还有其他我不知道的优点/缺点吗?

我的主要问题是,在这种情况下使用表达式树是否值得?为什么或者为什么不?

4

1 回答 1

5

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

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

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

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

于 2012-05-26T15:13:56.707 回答