gpt4 book ai didi

c# - 表达式和函数之间的区别

转载 作者:太空狗 更新时间:2023-10-29 19:52:11 27 4
gpt4 key购买 nike

Expression 和 Func 有什么区别?两者都可以完成相同的任务。那有什么区别呢?

最佳答案

Expression trees是逻辑的数据 表示 - 这意味着它们可以在执行时通过诸如 LINQ 提供程序之类的东西进行检查。他们可以弄清楚代码的含义,并可能将其转换为另一种形式,例如 SQL。

Func然而,类型族只是代表。它们最终成为正常的 IL,可以直接执行,但不能(轻松)检查。请注意,如果需要,您可以将表达式树(好吧,Expression<T>LambdaExpression)编译成委托(delegate)并在托管代码中执行它们。

您可以使用 Expression 类中的工厂方法手动构建表达式树,但通常您只是利用 C# 可以将 lambda 表达式 转换为表达式树和普通委托(delegate)这一事实:

Expression<Func<int, int>> square = x => x * x;
Func<int, int> square = x => x * x;

请注意,可以将 lambda 表达式转换为表达式树是有限制的。最重要的是,只能转换由单个表达式(而不是语句体)组成的 lambda:

// Compile-time error
Expression<Func<int, int>> square = x => { return x * x; };
// Works fine
Func<int, int> square = x => { return x * x; };

关于c# - 表达式和函数之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3123164/

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