【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%的工作中往往都用不到的那种技术,所以即便不是什么新技术,很多人对其理解都并不透彻.此文意图从表达 ...
随机推荐
- 【HarmonyOS】【JS】鸿蒙Js camera怎么拍照并使用image显示出来
官网中有描述camera组件功能界面属性介绍,但是官网没有具体的demo让我们感受拍照的功能,今天写一篇demo来完善一下拍照的功能 demo 功能如下 第一步首先进行拍照功能 第二步 进行js页面跳 ...
- 【自写信息搜集工具】ThunderSearch开发原理解析
前段时间结合zoomeye的开发文档做了个简易的信息搜集工具ThunderSearch[项目地址 / 博客地址],这次来讲讲具体的实现原理和开发思路 首先要能看懂开发文档,https://www.zo ...
- python+fastdfs+nginx实现打包下载功能
环境介绍:生产服务器开发人员需要给client下发数据,主要是图片及视频:图片服务器用fastdfs,下载由nginx 来提供: java 程序来调用此脚本,传递参数来决定打包文件内容: #!/usr ...
- 科技爱好者周刊(第 175 期):知识广度 vs 知识深度
这里记录每周值得分享的科技内容,周五发布. 本杂志开源(GitHub: ruanyf/weekly),欢迎提交 issue,投稿或推荐科技内容. 周刊讨论区的帖子<谁在招人?>,提供大量程 ...
- springboot 添加mybatisjar包发生的异常问题?
一.pro.xml文件中,添加mybatisjar包 <?xml version="1.0" encoding="UTF-8"?> <proj ...
- poj_3190
首先把所有的牛排个序,优先按照起始时间 其次建立一个堆,重载小于号(只可以重载小于号),优先按照右端点的时间排序,大的放下面(sort的时候会放后面),堆顶是结束时间最快的 #include < ...
- IPsec协议簇简析
简介 IPsec协议簇是应用在网络层上的,来保护IP数据报的一组网络传输协议的集合.它是IETF(Internet Engineering Task Force)制定的一系列协议,它为IP数据报提供了 ...
- VsCode配置C/C++开发环境
Visual Studio Code(VS Code)是基于 Electron 开发,支持 Windows.Linux 和 macOS 操作系统.内置了对JavaScript,TypeScript和N ...
- Nacos服务注册与发现的2种实现方法!
Spring Cloud Alibaba 技术体系中的 Nacos,提供了两个重要的功能:注册中心(服务注册与发现)功能和配置中心功能. 其中注册中心解决了微服务调用中,服务提供者和服务调用者的解耦, ...
- PHP版的猴子选大王算法
猴子选大王 这个算法可能是目前我看到的最简洁都算法吧,而且很好理解.它不同于其他算法,其他算法都是判断这个猴子能不能被选中,而他只是找出不能被选中的猴子,然后将其塞到数组模拟的环状队列中,参与下次选. ...