【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%的工作中往往都用不到的那种技术,所以即便不是什么新技术,很多人对其理解都并不透彻.此文意图从表达 ...
随机推荐
- openSUSE修改grub来修复对win8的引导
前言:继上一次安装试用各版本linux发行版后,由于做项目将机器纯windows了一把,现在又想安回centos,各种挫折折腾两天玩残一个u盘日,其中包括自己本本的原装系统也崩了,各种泪奔,下面记录一 ...
- gin中multipart/urlencoded表单
package main import ( "github.com/gin-gonic/gin" ) func main() { router := gin.Default() r ...
- python3 requests的content和text方法
text返回的是Unicode型的数据 content返回的是是二进制的数据. 也就是说,如果你想取文本,可以通过r.text. 如果想取图片,文件,则可以通过r.content >>&g ...
- 从服务端生成Excel电子表格(Node.js+SpreadJS)
Node.js是一个基于Chrome V8引擎的JavaScript运行环境,通常用于创建网络应用程序.它可以同时处理多个连接,并且不像其他大多数模型那样依赖线程. 对于 Web 开发者来说,从数据库 ...
- 利用JavaScript与正则表达式判断输入账号格式是否正确
在学习了HTML DOM对象后,做几个小练习来巩固一下所学内容. 正则表达式: 正则表达式,又称规则表达式.(英语:Regular Expression,在代码中常简写为regex.regexp或RE ...
- 什么是iptables?
目录 一:iptables 1.iptables简介 2.什么是防火墙? 3.防火墙种类 二:iptables基本介绍 1.解析内容 三:iptables流程(讲解) 1.流入本机 2.解析(流入本机 ...
- 码风QwQ
注:卡常.压行时怎么有效怎么来QwQ 快读真香.( 不喜欢用字符数组,使用string. 此时cin cout输入前会加这样三句以优化: ios::sync_with_stdio(0); cin.ti ...
- ApacheCN Asp.NET 译文集 20211126 更新
ASP.NET Core2 基础知识 零.前言 一.搭建舞台 二.控制器 三.视图 四.模型 五.验证 六.路由 七.RestBuy 八.添加功能.测试和部署 ASP.NET Core3 和 Angu ...
- js 每日一更(数组转换成前端更容易解析的树状结构)
<!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content ...
- CABasicAnimation基础核心动画
核心动画之作用在层上面. 动画的本质是改图层的某一个属性. CABasicAnimation *anim = [CABasicAnimation animation]; 图层有 ...