【C#表达式树 四】Expression类上的函数列表
Expression相当于工厂,这个工厂有各式各样的模型(函数),用来生成各种零部件(节点类型),最后组装成表达式树。
Expressions这个命名空间有各种个容器用陈放生产出来的零部件。
Expression 非常接近于类型Emit ,Emit就是直接 使用IL指令进行编程,它的最主要用途就是编译一个动态方法 ,恰好Expression 的主要作用
也是如此 ,可以把Expression编程看作是对Emit的一个简单的基于oo的封装,它们直接针对的更低层语言(IL)的接口,比如 Expression里面
没有while,for foreach,等种种循环,就是一个Expression.Loop(...) 就完了,类似还有Block 这个也有传入传出,和方法相似
列表中每个名字其实对应着一组函数(130个),这些函数函数有些有多重载(330个),但返回值的类型是一样的。
这些工厂方法所生成的表达式的意义应该说还是很直观的,就不特别介绍了。经常跟编译器打交道的话应该对这些名字尤其熟悉。
下一节我们开始使用这些函数创建表达式树节点
| 函数功能 | 返回值类型 | |
| Add | BinaryExpression | |
| AddAssign | BinaryExpression | |
| AddAssignChecked | BinaryExpression | |
| AddChecked | BinaryExpression | |
| And | BinaryExpression | |
| AndAlso | BinaryExpression | |
| AndAssign | BinaryExpression | |
| ArrayIndex | BinaryExpression | |
| Assign | BinaryExpression | |
| Coalesce | BinaryExpression | |
| Divide | BinaryExpression | |
| DivideAssign | BinaryExpression | |
| Equal | BinaryExpression | |
| ExclusiveOr | BinaryExpression | |
| ExclusiveOrAssign | BinaryExpression | |
| GreaterThan | BinaryExpression | |
| GreaterThanOrEqual | BinaryExpression | |
| LeftShift | BinaryExpression | |
| LeftShiftAssign | BinaryExpression | |
| LessThan | BinaryExpression | |
| LessThanOrEqual | BinaryExpression | |
| MakeBinary | BinaryExpression | |
| Modulo | BinaryExpression | |
| ModuloAssign | BinaryExpression | |
| Multiply | BinaryExpression | |
| MultiplyAssign | BinaryExpression | |
| MultiplyAssignChecked | BinaryExpression | |
| MultiplyChecked | BinaryExpression | |
| NotEqual | BinaryExpression | |
| Or | BinaryExpression | |
| OrAssign | BinaryExpression | |
| OrElse | BinaryExpression | |
| Power | BinaryExpression | |
| PowerAssign | BinaryExpression | |
| ReferenceEqual | BinaryExpression | |
| ReferenceNotEqual | BinaryExpression | |
| RightShift | BinaryExpression | |
| RightShiftAssign | BinaryExpression | |
| Subtract | BinaryExpression | |
| SubtractAssign | BinaryExpression | |
| SubtractAssignChecked | BinaryExpression | |
| SubtractChecked | BinaryExpression | |
| Block | BlockExpression | |
| TryGetActionType | bool | |
| TryGetFuncType | bool | |
| Catch | CatchBlock | |
| MakeCatchBlock | CatchBlock | |
| Condition | ConditionalExpression | |
| IfThen | ConditionalExpression | |
| IfThenElse | ConditionalExpression | |
| Constant | ConstantExpression | |
| ClearDebugInfo | DebugInfoExpression | |
| DebugInfo | DebugInfoExpression | |
| Default | DefaultExpression | |
| Empty | DefaultExpression | |
| Dynamic | DynamicExpression | |
| MakeDynamic | DynamicExpression | |
| ElementInit | ElementInit | |
| Lambda<TDelegate> | Expression<TDelegate> | |
| Break | GotoExpression | |
| Continue | GotoExpression | |
| Goto | GotoExpression | |
| MakeGoto | GotoExpression | |
| Return | GotoExpression | |
| ArrayAccess | IndexExpression | |
| MakeIndex | IndexExpression | |
| Property | IndexExpression | |
| Invoke | InvocationExpression | |
| Label | LabelExpression | |
| Label | LabelTarget | |
| Lambda | LambdaExpression | |
| ListInit | ListInitExpression | |
| Loop | LoopExpression | |
| Bind | MemberAssignment | |
| Field | MemberExpression | |
| MakeMemberAccess | MemberExpression | |
| Property | MemberExpression | |
| PropertyOrField | MemberExpression | |
| MemberInit | MemberInitExpression | |
| ListBind | MemberListBinding | |
| MemberBind | MemberMemberBinding | |
| ArrayIndex | MethodCallExpression | |
| Call | MethodCallExpression | |
| NewArrayBounds | NewArrayExpression | |
| NewArrayInit | NewArrayExpression | |
| New | NewExpression | |
| Parameter | ParameterExpression | |
| Variable | ParameterExpression | |
| RuntimeVariables | RuntimeVariablesExpression | |
| SwitchCase | SwitchCase | |
| Switch | SwitchExpression | |
| SymbolDocument | SymbolDocumentInfo | |
| MakeTry | TryExpression | |
| TryCatch | TryExpression | |
| TryCatchFinally | TryExpression | |
| TryFault | TryExpression | |
| TryFinally | TryExpression | |
| GetActionType | Type | |
| GetDelegateType | Type | |
| GetFuncType | Type | |
| TypeEqual | TypeBinaryExpression | |
| TypeIs | TypeBinaryExpression | |
| ArrayLength | UnaryExpression | |
| Convert | UnaryExpression | |
| ConvertChecked | UnaryExpression | |
| Decrement | UnaryExpression | |
| Increment | UnaryExpression | |
| IsFalse | UnaryExpression | |
| IsTrue | UnaryExpression | |
| MakeUnary | UnaryExpression | |
| Negate | UnaryExpression | |
| NegateChecked | UnaryExpression | |
| Not | UnaryExpression | |
| OnesComplement | UnaryExpression | |
| PostDecrementAssign | UnaryExpression | |
| PostIncrementAssign | UnaryExpression | |
| PreDecrementAssign | UnaryExpression | |
| PreIncrementAssign | UnaryExpression | |
| Quote | UnaryExpression | |
| Rethrow | UnaryExpression | |
| Throw | UnaryExpression | |
| TypeAs | UnaryExpression | |
| UnaryPlus | UnaryExpression | |
| Unbox | UnaryExpression | |
| CanReduce | bool | |
| Reduce | Expression | |
| NodeType | ExpressionType | |
| Type | Type | |
【C#表达式树 四】Expression类上的函数列表的更多相关文章
- 深入学习C#匿名函数、委托、Lambda表达式、表达式树类型——Expression tree types
匿名函数 匿名函数(Anonymous Function)是表示“内联”方法定义的表达式.匿名函数本身及其内部没有值或者类型,但是可以转换为兼容的委托或者表达式树类型(了解详情).匿名函数转换的计算取 ...
- 表达式树(Expression Trees)
[翻译]表达式树(Expression Trees) 原文地址:https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/con ...
- C# 表达式树(Expression)
c#中有Expression,即表达式. 通过Expression可以动态构造代码,并编译执行. 比如: 1. 创建参数表达式 :ParameterExpression numParam = Ex ...
- 表达式树(Expression Tree)
你每创建一个表示表达式的实例时,都可以将该类型实例看成是一棵表达式树.每种表示表达式的类型都有一个具体的类型,如Expression的Variable()方法创建的是ParameterExpressi ...
- C++使用模板、函数指针、接口和lambda表达式这四种方法做回调函数的区别比较
在C++中,两个类之间存在一种关系,某个类需要另外一个类去完成某一个功能,完成了之后需要告知该类结果,这种最普通最常见的需求,往往使用回调函数来解决. 如题,我总结下来有这么四种方式可以完成这项功能, ...
- 表达式树ExpressionTrees
简介 表达式树以树形数据结构表示代码,其中每一个节点都是一种表达式,比如方法调用和 x < y 这样的二元运算等.你可以对表达式树中的代码进行编辑和运算.这样能够动态修改可执行代码.在不同数据库 ...
- [C#] C# 知识回顾 - 表达式树 Expression Trees
C# 知识回顾 - 表达式树 Expression Trees 目录 简介 Lambda 表达式创建表达式树 API 创建表达式树 解析表达式树 表达式树的永久性 编译表达式树 执行表达式树 修改表达 ...
- 关于Expression表达式树的拼接
最近在做项目中遇到一个问题,需求是这样的: 我要对已经存在的用户进行检索,可以根据用户的id 或者用户名其中的一部分字符来检索出来,这样就出现了三种情况 只有id,只有用户名中一部字符,或者全部都有. ...
- 不可不知的表达式树(1)Expression初探
说起Lambda表达式,大家基本都很熟悉了,而表达式树(Expression Trees),则属于80%的工作中往往都用不到的那种技术,所以即便不是什么新技术,很多人对其理解都并不透彻.此文意图从表达 ...
随机推荐
- 从零开始, 开发一个 Web Office 套件 (1): 富文本编辑器
这是一个系列博客, 最终目的是要做一个基于HTML Canvas 的, 类似于微软 Office 的 Web Office 套件, 包括: 文档, 表格, 幻灯片... 等等. 富文本编辑器 万里长征 ...
- django-环境搭建-开使hello world!
django的环境安装非常简单,只需用pip安装一个django库就可以了,编辑器选择pycharm pip install django==2.1.2 查看版本号:pip show django C ...
- Vscode不能连接应用商店
删除这两个文件即可: 1.C:\Users\Administrator\.vscode 2.C:\Users\Administrator\AppData\Roaming\Code
- 主键约束(primary key 简称PK)
7.5.主键约束 主键约束相关术语 主键约束 主键字段:字段添加了主键约束,叫主键字段 主键值:主键字段中的每个值都叫主键值 什么是主键? 主键值是每一行记录的唯一标识(主键值是每一行记录的身份证号) ...
- 集合框架-Map集合练习-Map查表法
1 package cn.itcast.p10.map.test; 2 3 import java.util.HashMap; 4 import java.util.Map; 5 6 public c ...
- 网页中的一键加QQ群、唤起QQ群聊天窗口
1.进入QQ群官网: https://qun.qq.com 2. 登陆QQ账号,点击加群组件 3. 左侧选择指定的群,右侧会给出一键加群的链接 4. 浏览器访问刚才复制的链接,点击 打开腾讯QQ 5. ...
- Android 12(S) 图形显示系统 - SurfaceFlinger的启动和消息队列处理机制(四)
1 前言 SurfaceFlinger作为Android图形显示系统处理逻辑的核心单元,我们有必要去了解其是如何启动,初始化及进行消息处理的.这篇文章我们就来简单分析SurfaceFlinger这个B ...
- K8S探针和SVC,POD原理
(6)容器是否健康: spec.container.livenessProbe.若不健康,则Pod有可能被重启(可配置策略) (7)容器是否可用: spec.container.readiness ...
- mysql加强(6)~子查询简单介绍、子查询分类
一.子查询简单介绍 1.什么是子查询? 一个查询之中嵌套了其他的若干查询. 在使用select 语句查询时,有时候where的查询条件中的限制条件不是一个确定的值,而是一个来自于另一个查询的结果. 子 ...
- JavaCV的摄像头实战之五:推流
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本文是<JavaCV的摄像头实战> ...