gpt4 book ai didi

c# - 使用 BinaryExpression AND 解析表达式树

转载 作者:太空宇宙 更新时间:2023-11-03 14:26:02 29 4
gpt4 key购买 nike

我刚刚开始学习表达式树。

据我了解,它们的好处是当它们用作参数时可以解析它们,例如:

Foo.Bar(x => x.Process == "On" && x.Name == "Goofy")

但是当里面有AND的时候,如何解析表达式呢?

也许我误解了这一切,但我看不出使用表达式的原因?我现在已经浏览了将近数百个网站,它们都试图解释表达式树是什么,而且它们都成功了,期望它们从未解释过用途是什么——除了微不足道的解释“表达式树未编译……”。

最佳答案

表达式以树的形式表示代码。树的每个节点代表代码的一部分。例如,您问题中 lambda 表达式主体的树是这样的:

BinaryExpression (AndAlso)
.Left = BinaryExpression (Equal)
.Left = MemberExpression (x.Process)
.Expression = ParameterExpression (x)
.Member = MemberInfo (Process)
.Right = ConstantExpression ("On")
.Right = BinaryExpression (Equal)
.Left = MemberExpression (x.Name)
.Expression = ParameterExpression (x)
.Member = MemberInfo (Name)
.Right = ConstantExpression ("Goofy")

通常,表达式所代表的代码不会被执行,甚至不会被编译:它被分析以从中提取一些信息,将其转换为另一个表达式,甚至生成完全不同的东西(比如 SQL 查询Linq to SQL 或 Entity Framework )。这对于编译代码是不可能的,因为没有办法分析它(至少不容易)。

关于c# - 使用 BinaryExpression AND 解析表达式树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3982341/

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