C# 3.0语言新特性(语言规范):8 表达式树

原文:《C# Version 3.0 Specification》,Microsoft
翻译:lover_P

表达式树允许将拉姆达表达式表现为数据结构而不是可执行代码。一个可以转换为委托类型D的拉姆达表达式也可以转换为一个类型为System.Query.Expression<D>的表达式树。将一个拉姆达表达式转换为委托类型导致可执行代码被委托所生成和引用,而将其转换为一个表达式树类型将导致创建了表达式树实例的代码被发出(Emit)。表达式树是拉姆达表达式的一种高效的内存中(in-memory)数据表现形式,并且使得表达式的结构变得透明和明显。

下面的例子将一个拉姆达表达式分别表现为了可执行代码和表达式树。由于存在到Func<int, int>的转换,因此存在到Expression<Func<int, int>>的转换。

Func<int, int> f = x => x + 1;                 // 代码

Expression<Func<int, int>> e = x => x + 1;  // 数据

在这些赋值完成之后,委托f标识一个返回x + 1的方法,而表达式树e表示一个描述了表达式x + 1的数据结构。

注意

表达式树的结构将被转换为一份单独的规范。该规范在PDC 2005技术预览版中并不适用。

转载于:https://www.cnblogs.com/rhyeee/archive/2005/09/26/244345.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值