你的位置:首页 > 软件开发 > ASP.net > C#中的表达式树的浅解

C#中的表达式树的浅解

发布时间:2016-04-21 18:00:07
表达式树可以说是Linq的核心之一,为什么是Linq的核心之一呢?因为表达式树使得c#不再是仅仅能编译成IL,我们可以通过c#生成一个表达式树,将结果作为一个中间格式,在将其转换成目标平台上的本机语言。比如SQL。我们常用的Linq to sql就是这样生成SQL的。 表达式树是 ...

C#中的表达式树的浅解

表达式树可以说是Linq的核心之一,为什么是Linq的核心之一呢?因为表达式树使得c#不再是仅仅能编译成IL,我们可以通过c#生成一个表达式树,将结果作为一个中间格式,在将其转换成目标平台上的本机语言。比如SQL。我们常用的Linq to sql就是这样生成SQL的。

表达式树是.NET 3.5之后引入的,它是一个强大灵活的工具(比如用在LINQ中构造动态查询)。

先来看看Expression类的API接口:

namespace System.Linq.Expressions{  //  // 摘要:  //   以表达式目录树的形式将强类型 lambda 表达式表示为数据结构。此类不能被继承。  //  // 类型参数:  //  TDelegate:  //   System.Linq.Expressions.Expression`1 表示的委托的类型。  public sealed class Expression<TDelegate> : LambdaExpression  {    //    // 摘要:    //   将表达式树描述的 lambda 表达式编译为可执行代码,并生成表示该 lambda 表达式的委托。    //    // 返回结果:    //   一个 TDelegate 类型的委托,它表示由 System.Linq.Expressions.Expression`1 描述的已编译的 lambda 表达式。    public TDelegate Compile();    //    // 摘要:    //   生成表示 lambda 表达式的委托。    //    // 参数:    //  debugInfoGenerator:    //   编译器用于标记序列点并批注局部变量的调试信息生成器。    //    // 返回结果:    //   包含 lambda 的已编译版本的委托。    public TDelegate Compile(DebugInfoGenerator debugInfoGenerator);    //    // 摘要:    //   创建一个与此表达式类似的新表达式,但使用所提供的子级。如果所有子级都相同,则将返回此表达式。    //    // 参数:    //  body:    //   结果的 System.Linq.Expressions.LambdaExpression.Body 属性。    //    //  parameters:    //   结果的 System.Linq.Expressions.LambdaExpression.Parameters 属性。    //    // 返回结果:    //   此表达式(如果未更改任何子级),或带有更新的子级的表达式。    public Expression<TDelegate> Update(Expression body, IEnumerable<ParameterExpression> parameters);    protected internal override Expression Accept(ExpressionVisitor visitor);  }}

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:C#中的表达式树的浅解

关键词:C#

C#
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录