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. WPS修改批注部分的字体颜色?

    今天遇到一个问题,就是复制文档的时候有几块红色字体想改成黑色,怎么也改不成功,通过修改字体颜色无效,通过百度找到了解决方法记录一下. 解决方法 审阅--显示标记--点击插入和删除(去掉前面的对钩即可) ...

  2. docker镜像中文件丢失

    背景介绍 笔者创建了一个镜像,然后在不同的主机上启动,发现有的能启动,有的却不行,报错信息为找不到文件. 犹记得当初有人介绍,只要docker镜像做好了,拿到任何地方都可以用,此处好像不成呢,好诡异的 ...

  3. pytorch运行错误:ValueError: too many dimensions 'str'

    问题: 本人在使用BERT进行微调的时候,在读取数据的时候出现了一个错误:ValueError: too many dimensions 'str'    于是我Debug了以后,发现问题出现在这个部 ...

  4. python利用正则表达式提取文本中特定内容

    正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式. re 模块使 Python ...

  5. canvas绘制“飞机大战”小游戏,真香!

    canvas是ArkUI开发框架里的画布组件,常用于自定义绘制图形.因为其轻量.灵活.高效等优点,被广泛应用于UI界面开发中. 本期,我们将为大家介绍canvas组件的使用. 一.canvas介绍 1 ...

  6. SpringBoot集成AOP

    AOP简介 面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术,AOP是OOP的延续.简单的说它就是把我们程序重复的代码抽取出来,在需要执行的时候,使用动态代理技术,在不修改 ...

  7. 通过Xib加载控制器的View

    1.创建窗口self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];2.设置窗口根控制器2.1从XIB当 ...

  8. Copy as Markdown - 将页面链接按照 Markdown 格式copy

    将页面文字和链接组成 Markdown 格式的网址 直接对页面链接右键使用时,无法获取链接标题,只能显示 No Title 所以需要: 选中「想作为标题的部分文字」, 然后去对「页面链接」右键-> ...

  9. C预备知识_001

    程序由什么构成? 1.对数据的描述:在程序中要指定用到哪些数据以及这些数据的类型和数据的组织形式,其实这就是数据结构(data structure). 2.对操作的描述:即要求计算机就行操作的步骤,也 ...

  10. 02 HTML标签

    2. HTML标签 1. HTML简介 用户使用浏览器打开网页看到结果的过程就是:浏览器将服务端的文本文件(即网页文件)内容下载到本地,然后打开显示的过程. 而文本文件的文档结构只有空格和黄航两种组织 ...