gpt4 book ai didi

c# - 表达式树重用值?

转载 作者:行者123 更新时间:2023-11-30 15:05:02 25 4
gpt4 key购买 nike

我正在阅读 Jon Skeet 的书。 (表达式树章节)它有一个用 lambda 表达式创建表达式树的例子:

Expression<Func<string, string, bool>> expression =    (x, y) => x.StartsWith(y);
var compiled = expression.Compile();
Console.WriteLine(compiled("First", "Second"));
Console.WriteLine(compiled("First", "Fir"));

现在他正在对表达式树做同样的事情:

enter image description here

问题:

黄色部分已经包含了参数信息!

为什么我必须在 blue 部分再次指定这些参数?

最佳答案

我认为你的问题是:

Why can't Expression.Lambda inspect the entire expression-body for parameter-expressions and then use them as the expression-parameters, relieving me of the trouble of having to explicitly hand them over again in the Lambda call?

嗯,它当然可以,但它怎么知道在一般情况下以什么顺序接受这些参数?

在您的示例中,它如何知道是否生成等价的表达式:

(x, y) => x.StartsWith(y) 

(或)

(y, x) => x.StartsWith(y)?

您的 lambda.Compile()("42", "4") 应该返回 true 还是 false

在一般情况下,它不能代表您做出这些决定。

关于c# - 表达式树重用值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9537849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com