【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%的工作中往往都用不到的那种技术,所以即便不是什么新技术,很多人对其理解都并不透彻.此文意图从表达 ...
随机推荐
- 地底,TypeScript和全球3D建筑发布于CesiumJS 1.70
Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/ 2020年6月1日Cesium JS发布1.70 release ...
- How To Remove Systemd Service
Method systemctl stop [servicename] systemctl disable [servicename] rm /your/service/locations/[serv ...
- C++普通成员函数的调用形式
#include<iostream> using namespace std; class A { public: int data; void foo(int x) { data = x ...
- Flink源码学习笔记(2) 基于Yarn的自动伸缩容实现
1.背景介绍 随着实时计算技术在之家内部的逐步推广,Flink 任务数及计算量都在持续增长,集群规模的也在逐步增大,本着降本提效的理念,我们研发了 Flink 任务伸缩容功能: 提供自动伸缩容功能,可 ...
- 布客·ApacheCN 编程/后端/大数据/人工智能学习资源 2021.7
公告 ApacheCN 翻译预计将于半年内恢复. 我们的开源项目必须有中文的 README,如果是文档类项目,必须全部中文,否则将会被清理.请大家贡献项目时一定要留意. 我们目标是[财务自由+情感自由 ...
- react 配置使用less后缀文件
//安装less less less-loader npm install less less-loader --save-dev 安装完成后,在项目中的config目录下找到webpack.conf ...
- AT2645 [ARC076D] Exhausted?
解法一 引理:令一个二分图两部分别为 \(X, Y(|X| \le |Y|)\),若其存在完美匹配当且仅当 \(\forall S \subseteq X, f(S) \ge |S|\)(其中 \(f ...
- JFrame 的层次结构 及 背景设置说明
感谢原文:https://blog.csdn.net/qq_32006373/article/details/49659129 一.JFrame 的层次结构 我们通过两个图来说明一下 JFrame 的 ...
- IAAS, SAAS, PAAS
原文是Pizza‐as‐a‐Service: a detailed view,用来类比Cloud Service Models.出处来自于Data Sovereignty and the Cloud ...
- 优化UITableViewCell高度计算的那些事 by --胡 xu
这篇总结你可以读到: UITableView高度计算和估算的机制 不同iOS系统在高度计算上的差异 iOS8 self-sizing cell UITableView+FDTemplateLayout ...