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类上的函数列表的更多相关文章

  1. 深入学习C#匿名函数、委托、Lambda表达式、表达式树类型——Expression tree types

    匿名函数 匿名函数(Anonymous Function)是表示“内联”方法定义的表达式.匿名函数本身及其内部没有值或者类型,但是可以转换为兼容的委托或者表达式树类型(了解详情).匿名函数转换的计算取 ...

  2. 表达式树(Expression Trees)

    [翻译]表达式树(Expression Trees) 原文地址:https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/con ...

  3. C# 表达式树(Expression)

    c#中有Expression,即表达式. 通过Expression可以动态构造代码,并编译执行.  比如: 1.  创建参数表达式 :ParameterExpression numParam = Ex ...

  4. 表达式树(Expression Tree)

    你每创建一个表示表达式的实例时,都可以将该类型实例看成是一棵表达式树.每种表示表达式的类型都有一个具体的类型,如Expression的Variable()方法创建的是ParameterExpressi ...

  5. C++使用模板、函数指针、接口和lambda表达式这四种方法做回调函数的区别比较

    在C++中,两个类之间存在一种关系,某个类需要另外一个类去完成某一个功能,完成了之后需要告知该类结果,这种最普通最常见的需求,往往使用回调函数来解决. 如题,我总结下来有这么四种方式可以完成这项功能, ...

  6. 表达式树ExpressionTrees

    简介 表达式树以树形数据结构表示代码,其中每一个节点都是一种表达式,比如方法调用和 x < y 这样的二元运算等.你可以对表达式树中的代码进行编辑和运算.这样能够动态修改可执行代码.在不同数据库 ...

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

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

  8. 关于Expression表达式树的拼接

    最近在做项目中遇到一个问题,需求是这样的: 我要对已经存在的用户进行检索,可以根据用户的id 或者用户名其中的一部分字符来检索出来,这样就出现了三种情况 只有id,只有用户名中一部字符,或者全部都有. ...

  9. 不可不知的表达式树(1)Expression初探

    说起Lambda表达式,大家基本都很熟悉了,而表达式树(Expression Trees),则属于80%的工作中往往都用不到的那种技术,所以即便不是什么新技术,很多人对其理解都并不透彻.此文意图从表达 ...

随机推荐

  1. echarts的通用属性的介绍

    通常做数据可视化时,会用到统计图,这里我使用的是Echarts,对于第一次用的人来说,还是有点难度的,主要是里面的属性太多,看的头痛,这里我自己做个笔记 这里的配置项手册里面就是查找各种属性了,在Ec ...

  2. http8种请求方式

    根据HTTP标准,HTTP请求可以使用多种请求方法. HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法. HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELE ...

  3. 分治FFT小记🐤

    分治FFT:在 $O(n \log^2 n)$ 的时间内求出类似于 $f_i=\sum\limits_{j=0}^{i-1}g(i-j)f(j)$ 之类的递推式 思想:同 CDQ 分治的思想,先分成左 ...

  4. python基础详解

    python基础部分 python基础一 python基础二 Python最详细,最深入的代码块小数据池剖析 深浅copy python文件操作 python函数部分 python函数初识 pytho ...

  5. gcc 11.2 在线升级

    环境:centos 7 1.准备开发环境 $ yum groupinstall "Development Tools" $ yum install glibc-static lib ...

  6. js 实现光标控制与字符串查找

    转载请注明来源:https://www.cnblogs.com/hookjc/ 光标定位: <html> <head> <meta http-equiv="co ...

  7. HTTPS 原理详解 (转)

    HTTPS(全称:HyperText Transfer Protocol over Secure Socket Layer),其实 HTTPS 并不是一个新鲜协议,Google 很早就开始启用了,初衷 ...

  8. 21个实用便利的PHP代码

    转载请注明来源:https://www.cnblogs.com/hookjc/ 1. PHP可阅读随机字符串 此代码将创建一个可阅读的字符串,使其更接近词典中的单词,实用且具有密码验证功能. /*** ...

  9. js中(function(){}()),(function(){})(),$(function(){});之间的区别

    1. (function(){}())与(function(){})() 这两种写法,都是一种立即执行函数的写法,即IIFE (Immediately Invoked Function Express ...

  10. Category注意事项

    1.分类的使用注意事项 分类只能增加方法, 不能增加成员变量 @interface Person (NJ) { // 错误写法 // int _age; } - (void)eat; @end 分类中 ...