Jon*_*eet 13
表达式树是逻辑的数据表示 - 这意味着它们可以在LINQ提供程序之类的执行时进行检查.他们可以解决代码的含义,并可能将其转换为另一种形式,例如SQL.
该Func类型的家庭,但是,都只是代表.它们最终成为正常的IL,可以直接执行,但不能(轻松)检查.请注意,如果需要,您可以将表达式树(well,Expression<T>and LambdaExpression)编译到委托中,并在托管代码中执行这些树.
您可以使用Expression类中的工厂方法手动构建表达式树,但通常只使用C#可以将lambda表达式转换为表达式树和普通委托的事实:
Expression<Func<int, int>> square = x => x * x;
Func<int, int> square = x => x * x;
Run Code Online (Sandbox Code Playgroud)
请注意,可以将lambda表达式转换为表达式树存在限制.最重要的是,只能转换由单个表达式(而不是语句体)组成的lambdas:
// Compile-time error
Expression<Func<int, int>> square = x => { return x * x; };
// Works fine
Func<int, int> square = x => { return x * x; };
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1930 次 |
| 最近记录: |