【发布时间】:2011-01-03 13:41:19
【问题描述】:
我已经使用表达式树几天了,我很想知道 Expression.Reduce() 的作用。 msdn documentation 不是很有帮助,因为它只声明它“减少”了表达式。为了以防万一,我尝试了一个示例(见下文)来检查此方法是否包含数学归约,但似乎并非如此。
有谁知道这个方法是做什么的,是否可以提供一个简单的例子来展示它的作用?有什么好的资源吗?
static void Main(string[] args)
{
Expression<Func<double, double>> func = x => (x + x + x) + Math.Exp(x + x + x);
Console.WriteLine(func);
Expression r_func = func.Reduce();
Console.WriteLine(r_func); // This prints out the same as Console.WriteLine(func)
}
【问题讨论】:
-
您的示例可能存在缺陷。检查
CanReduce看看reduce 调用是否真的会做任何事情。 -
当然,它返回 false。换句话说,我的问题是:Expression.CanReduce 什么时候返回 true?
-
当表达式可以简化为“更简单”的表达式。我对“更简单”的猜测将基于内部表示 - “更简单”的表达式是具有更小和/或更快的内部表示的表达式。
-
这里的猜测相同 - 因此问题。
-
嘿,鲍里斯,你是怎么做到的? (即如何添加一个超链接,将 URL 隐藏在某个字符串后面?) - 谢谢!
标签: c# .net lambda expression-trees