[转自msdn]Express Tree表达式目录树

表达式目录树以数据形式表示语言级别代码。数据存储在树形结构中。表达式目录树中的每个节点都表示一个表达式,例如一个方法调用或诸如 x < y 的二元运算。

下面的插图显示一个表达式及其表达式目录树形式的表示形式的示例。表达式的不同部分进行了颜色编码,以便与表达式目录树中相应的表达式目录树节点匹配。此外,还显示了不同类型的表达式目录树节点。

下面的代码示例演示如何将表示 lambda 表达式 num => num < 5 (C#) 或 Function(num) num < 5 (Visual Basic) 的表达式目录树分解为它的部分。

// Add the following using directive to your code file:
// using System.Linq.Expressions;

// Create an expression tree.
Expression<Func<int, bool>> exprTree = num => num < 5;

// Decompose the expression tree.
ParameterExpression param = (ParameterExpression)exprTree.Parameters[0];
BinaryExpression operation = (BinaryExpression)exprTree.Body;
ParameterExpression left = (ParameterExpression)operation.Left;
ConstantExpression right = (ConstantExpression)operation.Right;

Console.WriteLine("Decomposed expression: {0} => {1} {2} {3}",
                  param.Name, left.Name, operation.NodeType, right.Value);

/**//*  This code produces the following output:

    Decomposed expression: num => num LessThan 5
*/

命名空间提供用于手动生成表达式目录树的 API。 类包含创建特定类型的表达式目录树节点的静态工厂方法,例如,(表示一个已命名的参数表达式)或 (表示一个方法调用)。 命名空间中还定义了 、 和其他特定于表达式的表达式目录树类型。这些类型派生自抽象类型 。

编译器也可以为您生成表达式目录树。编译器生成的表达式目录树的根始终在类型 的节点中;也就是说,其根节点表示一个 lambda 表达式。

下面的代码示例演示创建表示 lambda 表达式 num => num < 5 (C#) 或 Function(num) num < 5 (Visual Basic) 的表达式目录树的两种方法。

// Add the following using directive to your code file:
// using System.Linq.Expressions;

// Manually build the expression tree for 
// the lambda expression num => num < 5.
ParameterExpression numParam = Expression.Parameter(typeof(int), "num");
ConstantExpression five = Expression.Constant(5, typeof(int));
BinaryExpression numLessThanFive = Expression.LessThan(numParam, five);
Expression<Func<int, bool>> lambda1 =
    Expression.Lambda<Func<int, bool>>(
        numLessThanFive,
        new ParameterExpression[] { numParam });

// Let the compiler generate the expression tree for
// the lambda expression num => num < 5.
Expression<Func<int, bool>> lambda2 = num => num < 5;

时间: 2024-08-03 07:53:12

[转自msdn]Express Tree表达式目录树的相关文章

EasyUI Tree+Asp.net实现权限树或目录树导航的简单实例

 本篇文章主要是对EasyUI Tree+Asp.net实现权限树或目录树导航的简单实例进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助  代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Main.aspx.cs" Inherits="Manage_Main" %>   <!DOCTYPE html PUBLIC "

高速的asp.net目录树源代码

前台页面: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Tree._Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/

无限级目录树+记忆节点状态

特点: 1.无限级节点. 2.直接产生html代码,容易修改. 3.目录清楚,类似于资源管理器,(csdn论坛的,层数多了就不容易分清楚层次了). 4.记忆节点状态,人性化. 演示: http://www.yemaweb.com/demo/tree/ 下载: http://www.yemaweb.com/demo/tree/tree.rar 核心代码如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

以前收集的一些资料---如何使用ASP实现网站的“目录树”管理

使用ASP实现网站的目录树本来想多翻译些东西出来的,但是最近越来越忙了,以后我尽量多贴些短小的代码出来,翻译是越来越没空完成了.呵呵.数据库结构(共使用了两个表)1.tblCategory字段名  类型   Root   binary   说明树关或开(目录的根)ID     自动编号 关键字Sort   integer  识别该字段内容的整数(如果root是开状态sort为0)表示显示的目录的顺序Name   text(255)可以包含html中的标识符HREF   text(255) 允许空

如何使用ASP实现网站的“目录树”管理

使用ASP实现网站的目录树本来想多翻译些东西出来的,但是最近越来越忙了,以后我尽量多贴些短小的代码出来,翻译是越来越没空完成了.呵呵.数据库结构(共使用了两个表)1.tblCategory字段名 类型 Root binary 说明树关或开(目录的根)ID 自动编号 关键字Sort integer 识别该字段内容的整数(如果root是开状态sort为0)表示显示的目录的顺序Name text(255)可以包含html中的标识符HREF text(255) 允许空2.tblPagesID 自动编号

在 Linux 中怎样使用cp命令合并目录树

在 Linux 中怎样使用cp命令合并目录树 怎样将两个布局相似的目录树合并成一个新的目录树?为理解该问题让我们思考下面的例子. 假设 dir1 和 dir2 目录中分别有3个子目录a,b和c.目录布局如下所示:  输入目录布局 Layout of input directories 在目录a,b和c中有一些文件,tree命令的输出将能更好的说明:  文件布局 Layout of files 1. 使用cp命令创建合并: 现在我们将这两个目录合并成一个名为"merged"新的目录中.完

jQuery目录树插件wdTree使用方法

wdTree是一个轻量级的jQuery目录树插件,支持多级目录选择,目录和文件复选框选项,获取复选框的值,支持多个配置参数自定义,多个回调函数配置,还可以从其他页面AJAX Loading数据加载. 使用方法   要使用这个插件,需要一个HTML的元素,比如下面的代码: <div id="tree"></div> 然后调用插件 var o = {     showcheck: true     //onnodeclick:function(item){alert

dhtmlxTree目录树增加右键菜单以及拖拽排序的实现方法_php实例

在以前的一个公司内部管理系统(InnerOA)中,对于目录树的构造我采用的是dTree,实现无限级目录显示及右键菜单功能(右键菜单中包括:新建.修改.共享.删除.刷新等功能,如下图所示) 关于公司内部管理系统(InnerOA)中目录树的一些知识以后有时间将整理并提供源码. 但是dTree唯一遗憾的是不支持拖拽排序功能,这让我在完成InnerOA之后心里一直纠结的问题.在网上查看关于目录树的一些内容,dTree是我目前认为最符合我项目的一个.在一个偶然机会,发现了另一个强大的目录树,也就是本文所说

深入linux下遍历目录树的方法总结分析_C 语言

前几天需要实现对整个目录树的遍历,查阅了相关的一些资料.开始找到的原始的方法是使用readdir()与lstat()函数实现递归遍历,后来发现linux对于目录遍历这种最常用的操作已经提供了很完善的接口:ftw()与nftw().下面就这两种方法具体说明一下.1.手动实现递归1.1 stat()函数族stat函数族包括:stat,fstat以及lstat函数,都是向用户返回文件的属性信息(元数据). 复制代码 代码如下: view plaincopy to clipboardprint?#inc