【发布时间】:2015-04-24 12:22:40
【问题描述】:
从the documentation 及其名称暗示可以推断,对于可以进一步分解为更小的表达式的所有表达式,CanReduce 属性的值必须设置为 true,反之亦然。
但仔细观察后,这种推论似乎并非在所有情况下都成立。以LambdaExpression 为例,它肯定是一个复合单元。但是直接从Expression 类派生的LambdaExpression 类不会覆盖CanReduce 属性。 Expression 类将 CanReduce 属性定义为虚拟,并实现返回 false,因此暗示 lambda 表达式不能进一步简化,这是不正确的。
那么这个属性的真正含义是什么?
【问题讨论】:
-
例如复合赋值
a+=b可以简化为a=a+b。 -
不错。谢谢你。意思是否仅限于这些运算符(我忘记它们叫什么了)?
-
我对@987654334@没有深入研究,要说它是真是假。
-
非常感谢您。我想我发现了一些在这种情况下可能有用的东西,在这里:stackoverflow.com/a/2044367/303685
-
.NET 4.0: What does Expression.Reduce() do? 的可能重复项(我知道,您问的是
CanReduce,而不是Reduce。但是,如果您了解后者的作用,您将更接近理解前者。)
标签: linq linq-expressions custom-linq-providers