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. openSUSE修改grub来修复对win8的引导

    前言:继上一次安装试用各版本linux发行版后,由于做项目将机器纯windows了一把,现在又想安回centos,各种挫折折腾两天玩残一个u盘日,其中包括自己本本的原装系统也崩了,各种泪奔,下面记录一 ...

  2. gin中multipart/urlencoded表单

    package main import ( "github.com/gin-gonic/gin" ) func main() { router := gin.Default() r ...

  3. python3 requests的content和text方法

    text返回的是Unicode型的数据 content返回的是是二进制的数据. 也就是说,如果你想取文本,可以通过r.text. 如果想取图片,文件,则可以通过r.content >>&g ...

  4. 从服务端生成Excel电子表格(Node.js+SpreadJS)

    Node.js是一个基于Chrome V8引擎的JavaScript运行环境,通常用于创建网络应用程序.它可以同时处理多个连接,并且不像其他大多数模型那样依赖线程. 对于 Web 开发者来说,从数据库 ...

  5. 利用JavaScript与正则表达式判断输入账号格式是否正确

    在学习了HTML DOM对象后,做几个小练习来巩固一下所学内容. 正则表达式: 正则表达式,又称规则表达式.(英语:Regular Expression,在代码中常简写为regex.regexp或RE ...

  6. 什么是iptables?

    目录 一:iptables 1.iptables简介 2.什么是防火墙? 3.防火墙种类 二:iptables基本介绍 1.解析内容 三:iptables流程(讲解) 1.流入本机 2.解析(流入本机 ...

  7. 码风QwQ

    注:卡常.压行时怎么有效怎么来QwQ 快读真香.( 不喜欢用字符数组,使用string. 此时cin cout输入前会加这样三句以优化: ios::sync_with_stdio(0); cin.ti ...

  8. ApacheCN Asp.NET 译文集 20211126 更新

    ASP.NET Core2 基础知识 零.前言 一.搭建舞台 二.控制器 三.视图 四.模型 五.验证 六.路由 七.RestBuy 八.添加功能.测试和部署 ASP.NET Core3 和 Angu ...

  9. js 每日一更(数组转换成前端更容易解析的树状结构)

    <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content ...

  10. CABasicAnimation基础核心动画

    核心动画之作用在层上面.     动画的本质是改图层的某一个属性.     CABasicAnimation *anim = [CABasicAnimation animation];     图层有 ...