注解

抽象类 Expression 提供用于为表达式树建模的类层次结构的根。

此命名空间中派生自的类 Expression (例如 MemberExpressionParameterExpression )用于表示表达式树中的节点。 Expression类包含 static (Shared Visual Basic) 工厂方法来创建各种类型的表达式树节点。

枚举类型 ExpressionType 指定唯一的节点类型。

Expressions 命名空间 38个类 2个接口 3个枚举
类型 类名 说明
BinaryExpression  表示具有二进制运算符的表达式。
BlockExpression  表示包含一个表达式序列的块,表达式中可定义变量。
CatchBlock  表示 try 块中的 catch 语句。
ConditionalExpression  表示具有条件运算符的表达式。
ConstantExpression  表示具有常数值的表达式。
DebugInfoExpression  发出或清除调试信息的序列点。 这使调试器能够在调试时突出显示正确的源代码。
DefaultExpression  表示一个类型或空表达式的默认值。
DynamicExpression  表示一个动态操作。
DynamicExpressionVisitor  表示动态表达式树的访问者或重写者。
ElementInit  表示 IEnumerable 集合的单个元素的初始值设定项。
Expression  提供一种基类,表示表达式树节点的类派生自该基类。 它还包含用来创建各种节点类型的 static(在 Visual Basic 中为 Shared)工厂方法。 这是一个 abstract 类。
Expression<TDelegate>  将强类型化的 Lambda 表达式表示为表达式树形式的数据结构。 此类不能被继承。
ExpressionVisitor  表示表达式树的访问者或重写者。
GotoExpression  表示无条件跳转。 这包括返回语句,break 和 continue 语句以及其他跳转。
IndexExpression  表示对一个属性或数组进行索引。
InvocationExpression  表示一个将委托或 Lambda 表达式应用到一个自变量表达式列表的表达式。
LabelExpression  表示一个标签,可以将该标签放置在任何 Expression 上下文中。 如果已跳转到该标签,则它将获取由对应的 GotoExpression 提供的值。 否则,它接收 DefaultValue 中的值。 如果 Type 等于 System.Void,则不应提供值。
LabelTarget  用于表示 GotoExpression 的目标。
LambdaExpression  介绍 lambda 表达式。 它捕获一个类似于 .NET 方法主体的代码块。
ListInitExpression  表示具有集合初始值设定项的构造函数调用。
LoopExpression  表示无限循环。 可通过“中断”退出该循环。
MemberAssignment  表示对象的字段或属性的赋值操作。
MemberBinding  提供表示绑定的类派生自的基类,这些绑定用于对新创建对象的成员进行初始化。
MemberExpression  表示访问字段或属性。
MemberInitExpression  表示调用构造函数并初始化新对象的一个或多个成员。
MemberListBinding  表示初始化新创建对象的一个集合成员的元素。
MemberMemberBinding  表示初始化新创建对象的一个成员的成员。
MethodCallExpression  表示对静态方法或实例方法的调用。
NewArrayExpression  表示创建一个新数组,并可能初始化该新数组的元素。
NewExpression  表示一个构造函数调用。
ParameterExpression  表示一个命名的参数表达式。
RuntimeVariablesExpression  一个为变量提供运行时读/写权限的表达式。
SwitchCase  表示 SwitchExpression 的一个事例。
SwitchExpression  表示一个控制表达式,该表达式通过将控制传递到 SwitchCase 来处理多重选择。
SymbolDocumentInfo  存储用于发出源文件调试符号信息所必要的信息,尤其是文件名和唯一的语言标识符。
TryExpression  表示一个 try/catch/finally/fault 块。
TypeBinaryExpression  表示表达式和类型之间的操作。
UnaryExpression  表示具有一元运算符的表达式。
接口 IArgumentProvider  提供用于访问多个树节点(DynamicExpression、ElementInit、MethodCallExpression、InvocationExpression、NewExpression 和 IndexExpression)的参数的内部接口。 此 API 仅供内部使用。
接口 IDynamicExpression  提供用于访问 DynamicExpression 树节点的参数及 CallSite 和重写功能的内部接口。 不应使用此 API。 由于 DLL 重构,它只能是公共的;并且仅用于内部性能优化。
枚举 ExpressionType  介绍表达式树节点的节点类型。
枚举 GotoExpressionKind  指定此 GotoExpression 表示的跳转种类。
枚举 MemberBindingType  描述 MemberInitExpression 对象中使用的绑定类型。
     

【C#表达式树 一】Expressions 命名空间 38个类 2个接口 3个枚举的更多相关文章

  1. 表达式树练习实践:C# 五类运算符的表达式树表达

    目录 表达式树练习实践:C# 运算符 一,算术运算符 + 与 Add() - 与 Subtract() 乘除.取模 自增自减 二,关系运算符 ==.!=.>.<.>=.<= 三 ...

  2. [.net 面向对象程序设计进阶] (6) Lamda表达式(二) 表达式树快速入门

    [.net 面向对象程序设计进阶] (6) Lamda表达式(二) 表达式树快速入门 本节导读: 认识表达式树(Expression Tree),学习使用Lambda创建表达式树,解析表达式树. 学习 ...

  3. 表达式树(Expression Tree)

    饮水思源 本文并非原创而是下面网址的一个学习笔记 https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/e ...

  4. C#表达式树浅析

    一.前言 在我们日常开发中Lamba 表达式经常会使用,如List.Where(n=>Name="abc") 使用起来非常的方便,代码也很简洁,总之一个字就是“爽”.在之前我 ...

  5. 【C#表达式树 四】Expression类上的函数列表

    Expression相当于工厂,这个工厂有各式各样的模型(函数),用来生成各种零部件(节点类型),最后组装成表达式树. Expressions这个命名空间有各种个容器用陈放生产出来的零部件. Expr ...

  6. LinqToDB 源码分析——生成表达式树

    当我们知道了Linq查询要用到的数据库信息之后.接下就是生成对应的表达式树.在前面的章节里面笔者就已经介绍过.生成表达式树是事实离不开IQueryable<T>接口.而处理表达式树离不开I ...

  7. 再讲IQueryable<T>,揭开表达式树的神秘面纱

    接上篇<先说IEnumerable,我们每天用的foreach你真的懂它吗?> 最近园子里定制自己的orm那是一个风生水起,感觉不整个自己的orm都不好意思继续混博客园了(开个玩笑).那么 ...

  8. [C#] C# 知识回顾 - 表达式树 Expression Trees

    C# 知识回顾 - 表达式树 Expression Trees 目录 简介 Lambda 表达式创建表达式树 API 创建表达式树 解析表达式树 表达式树的永久性 编译表达式树 执行表达式树 修改表达 ...

  9. C# - LINQ 表达式树

    表达式树(Expression Tree) 表达式树是不可执行的代码,它只是用于表示一种树状的数据结构,树上的每一个节点都表示为某种表达式类型,大概有25种表达式类型,它们都派生自Expression ...

随机推荐

  1. linux虚拟化

    虚拟化硬件虚拟化:一台物理机虚拟出多台逻辑上的计算机cpu,内存可分配给多个虚拟机 虚拟机中 guestos 的配置有什么用 内存越大越好,CPU也不要太差,如果要用64位虚拟系统或者是Hyper-V ...

  2. python 小兵(12)模块1

    序列化 我们今天学习下序列化,什么是序列化呢? 将原本的字典.列表等内容转换成一个字符串的过程就叫做序列化. 为什么要有序列化模块: 比如,我们在python代码中计算的一个数据需要给另外一段程序使用 ...

  3. JavaBeginnersTutorial 中文系列教程·翻译完成

    原文:JavaBeginnersTutorial 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远. 在线阅读 ApacheCN 学习资源 目录 ...

  4. STC8H开发(九): STC8H8K64U模拟USB HID外设

    目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...

  5. Nacos极简教程

    简介 Nacos是服务发现与注册,服务配置中心. Nacos 具有如下特性: 服务发现和服务健康监测:支持基于DNS和基于RPC的服务发现,支持对服务的实时的健康检查,阻止向不健康的主机或服务实例发送 ...

  6. Nginx实现跨域配置详解

    主要给大家介绍了关于Nginx跨域使用字体文件的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍: 问题描述 今天在使用子域名访问根域名的CSS时,发现字体无法显示,在确保CSS和Font字 ...

  7. uniapp 使用iconfont图标

    步骤一 新建项目 步骤二 导入需要的图标,然后下载图标代码 步骤三  打开下载的压缩文件中的iconfont.css 步骤四 复制粘贴到项目中 步骤四在项目中使用 use in page

  8. LVS+Keepalived 高可用群集部署

    LVS+Keepalived 高可用群集部署 1.LVS+Keepalived 高可用群集概述 2.LVS+Keepalived高可用群集部署 1.LVS+Keepalived 高可用群集概述: LV ...

  9. Nginx中的Location和Rewrite

    Nginx中的Location和Rewrite 目录 Nginx中的Location和Rewrite 一.location 1. location的分类 2. location常用的匹配规则 3. l ...

  10. 浅谈Java中重写与重载的区别

    重载和重写是Java中两个截然不同的概念.但是却因为名字相近导致很多人经常混淆. 下面用例子展示出他们之间的区别. 在Java中,重载(overloading) 发生在本类.方法名相同,参数列表不同, ...