【C# 表达式树 三】ExpressionType 节点类型种类
//
// 摘要:
// 描述表达式目录树的节点的节点类型。
public enum ExpressionType
{
//
// 摘要:
// 加法运算,如 a + b,针对数值操作数,不进行溢出检查。
Add = 0,
//
// 摘要:
// 加法运算,如 (a + b),针对数值操作数,进行溢出检查。
AddChecked = 1,
//
// 摘要:
// 按位或逻辑 AND 运算,如 C# 中的 (a & b) 和 Visual Basic 中的 (a And b)。
And = 2,
//
// 摘要:
// 条件 AND 运算,它仅在第一个操作数的计算结果为 true 时才计算第二个操作数。 它与 C# 中的 (a && b) 和 Visual Basic 中的
// (a AndAlso b) 对应。
AndAlso = 3,
//
// 摘要:
// 获取一维数组长度的运算,如 array.Length。
ArrayLength = 4,
//
// 摘要:
// 一维数组中的索引运算,如 C# 中的 array[index] 或 Visual Basic 中的 array(index)。
ArrayIndex = 5,
//
// 摘要:
// 方法调用,如在 obj.sampleMethod() 表达式中。
Call = 6,
//
// 摘要:
// 表示 null 合并运算的节点,如 C# 中的 (a ?? b) 或 Visual Basic 中的 If(a, b)。
Coalesce = 7,
//
// 摘要:
// 条件运算,如 C# 中的 a > b ? a : b 或 Visual Basic 中的 If(a > b, a, b)。
Conditional = 8,
//
// 摘要:
// 一个常量值。
Constant = 9,
//
// 摘要:
// 强制转换或转换运算,如 C#中的 (SampleType)obj 或 Visual Basic 中的 CType(obj, SampleType)。 对于数值转换,如果转换后的值对于目标类型来说太大,这不会引发异常。
Convert = 10,
//
// 摘要:
// 强制转换或转换运算,如 C#中的 (SampleType)obj 或 Visual Basic 中的 CType(obj, SampleType)。 对于数值转换,如果转换后的值与目标类型大小不符,则引发异常。
ConvertChecked = 11,
//
// 摘要:
// 除法运算,如 (a / b),针对数值操作数。
Divide = 12,
//
// 摘要:
// 表示相等比较的节点,如 C# 中的 (a == b) 或 Visual Basic 中的 (a = b)。
Equal = 13,
//
// 摘要:
// 按位或逻辑 XOR 运算,如 C# 中的 (a ^ b) 或 Visual Basic 中的 (a Xor b)。
ExclusiveOr = 14,
//
// 摘要:
// “大于”比较,如 (a > b)。
GreaterThan = 15,
//
// 摘要:
// “大于或等于”比较,如 (a >= b)。
GreaterThanOrEqual = 16,
//
// 摘要:
// 调用委托或 lambda 表达式的运算,如 sampleDelegate.Invoke()。
Invoke = 17,
//
// 摘要:
// lambda 表达式,如 C# 中的 a => a + a 或 Visual Basic 中的 Function(a) a + a。
Lambda = 18,
//
// 摘要:
// 按位左移运算,如 (a << b)。
LeftShift = 19,
//
// 摘要:
// “小于”比较,如 (a < b)。
LessThan = 20,
//
// 摘要:
// “小于或等于”比较,如 (a <= b)。
LessThanOrEqual = 21,
//
// 摘要:
// 创建新的 System.Collections.IEnumerable 对象并从元素列表中初始化该对象的运算,如 C# 中的 new List<SampleType>(){
// a, b, c } 或 Visual Basic 中的 Dim sampleList = { a, b, c }。
ListInit = 22,
//
// 摘要:
// 从字段或属性进行读取的运算,如 obj.SampleProperty。
MemberAccess = 23,
//
// 摘要:
// 创建新的对象并初始化其一个或多个成员的运算,如 C# 中的 new Point { X = 1, Y = 2 } 或 Visual Basic 中的 New
// Point With {.X = 1, .Y = 2}。
MemberInit = 24,
//
// 摘要:
// 算术余数运算,如 C# 中的 (a % b) 或 Visual Basic 中的 (a Mod b)。
Modulo = 25,
//
// 摘要:
// 乘法运算,如 (a * b),针对数值操作数,不进行溢出检查。
Multiply = 26,
//
// 摘要:
// 乘法运算,如 (a * b),针对数值操作数,进行溢出检查。
MultiplyChecked = 27,
//
// 摘要:
// 算术求反运算,如 (-a)。 不应就地修改 a 对象。
Negate = 28,
//
// 摘要:
// 一元加法运算,如 (+a)。 预定义的一元加法运算的结果是操作数的值,但用户定义的实现可以产生特殊结果。
UnaryPlus = 29,
//
// 摘要:
// 算术求反运算,如 (-a),进行溢出检查。 不应就地修改 a 对象。
NegateChecked = 30,
//
// 摘要:
// 调用构造函数创建新对象的运算,如 new SampleType()。
New = 31,
//
// 摘要:
// 创建新的一维数组并从元素列表中初始化该数组的运算,如 C# 中的 new SampleType[]{a, b, c} 或 Visual Basic 中的
// New SampleType(){a, b, c}。
NewArrayInit = 32,
//
// 摘要:
// 创建新数组(其中每个维度的界限均已指定)的运算,如 C# 中的 new SampleType[dim1, dim2] 或 Visual Basic 中的
// New SampleType(dim1, dim2)。
NewArrayBounds = 33,
//
// 摘要:
// 按位求补运算或逻辑求反运算。 在 C# 中,它与整型的 (~a) 和布尔值的 (!a) 等效。 在 Visual Basic 中,它与 (Not a) 等效。
// 不应就地修改 a 对象。
Not = 34,
//
// 摘要:
// 不相等比较,如 C# 中的 (a != b) 或 Visual Basic 中的 (a <> b)。
NotEqual = 35,
//
// 摘要:
// 按位或逻辑 OR 运算,如 C# 中的 (a | b) 或 Visual Basic 中的 (a Or b)。
Or = 36,
//
// 摘要:
// 短路条件 OR 运算,如 C# 中的 (a || b) 或 Visual Basic 中的 (a OrElse b)。
OrElse = 37,
//
// 摘要:
// 对在表达式上下文中定义的参数或变量的引用。 有关更多信息,请参见 System.Linq.Expressions.ParameterExpression。
Parameter = 38,
//
// 摘要:
// 对某个数字进行幂运算的数学运算,如 Visual Basic 中的 (a ^ b)。
Power = 39,
//
// 摘要:
// 具有类型为 System.Linq.Expressions.Expression 的常量值的表达式。 System.Linq.Expressions.ExpressionType.Quote
// 节点可包含对参数的引用,这些参数在该节点表示的表达式的上下文中定义。
Quote = 40,
//
// 摘要:
// 按位右移运算,如 (a >> b)。
RightShift = 41,
//
// 摘要:
// 减法运算,如 (a - b),针对数值操作数,不进行溢出检查。
Subtract = 42,
//
// 摘要:
// 算术减法运算,如 (a - b),针对数值操作数,进行溢出检查。
SubtractChecked = 43,
//
// 摘要:
// 显式引用或装箱转换,其中如果转换失败则提供 null,如 C# 中的 (obj as SampleType) 或 Visual Basic 中的 TryCast(obj,
// SampleType)。
TypeAs = 44,
//
// 摘要:
// 类型测试,如 C# 中的 obj is SampleType 或 Visual Basic 中的 TypeOf obj is SampleType。
TypeIs = 45,
//
// 摘要:
// 赋值运算,如 (a = b)。
Assign = 46,
//
// 摘要:
// 表达式块。
Block = 47,
//
// 摘要:
// 调试信息。
DebugInfo = 48,
//
// 摘要:
// 一元递减运算,如 C# 和 Visual Basic 中的 (a - 1)。 不应就地修改 a 对象。
Decrement = 49,
//
// 摘要:
// 动态操作。
Dynamic = 50,
//
// 摘要:
// 默认值。
Default = 51,
//
// 摘要:
// 扩展表达式。
Extension = 52,
//
// 摘要:
// “跳转”表达式,如 C# 中的 goto Label 或 Visual Basic 中的 GoTo Label。
Goto = 53,
//
// 摘要:
// 一元递增运算,如 C# 和 Visual Basic 中的 (a + 1)。 不应就地修改 a 对象。
Increment = 54,
//
// 摘要:
// 索引运算或访问使用参数的属性的运算。
Index = 55,
//
// 摘要:
// 标签。
Label = 56,
//
// 摘要:
// 运行时变量的列表。 有关更多信息,请参见 System.Linq.Expressions.RuntimeVariablesExpression。
RuntimeVariables = 57,
//
// 摘要:
// 循环,如 for 或 while。
Loop = 58,
//
// 摘要:
// 多分支选择运算,如 C# 中的 switch 或 Visual Basic 中的 Select Case。
Switch = 59,
//
// 摘要:
// 引发异常的运算,如 throw new Exception()。
Throw = 60,
//
// 摘要:
// try-catch 表达式。
Try = 61,
//
// 摘要:
// 取消装箱值类型运算,如 MSIL 中的 unbox 和 unbox.any 指令。
Unbox = 62,
//
// 摘要:
// 加法复合赋值运算,如 (a += b),针对数值操作数,不进行溢出检查。
AddAssign = 63,
//
// 摘要:
// 按位或逻辑 AND 复合赋值运算,如 C# 中的 (a &= b)。
AndAssign = 64,
//
// 摘要:
// 除法复合赋值运算,如 (a /= b),针对数值操作数。
DivideAssign = 65,
//
// 摘要:
// 按位或逻辑 XOR 复合赋值运算,如 C# 中的 (a ^= b)。
ExclusiveOrAssign = 66,
//
// 摘要:
// 按位左移复合赋值运算,如 (a <<= b)。
LeftShiftAssign = 67,
//
// 摘要:
// 算术余数复合赋值运算,如 C# 中的 (a %= b)。
ModuloAssign = 68,
//
// 摘要:
// 乘法复合赋值运算,如 (a *= b),针对数值操作数,不进行溢出检查。
MultiplyAssign = 69,
//
// 摘要:
// 按位或逻辑 OR 复合赋值运算,如 C# 中的 (a |= b)。
OrAssign = 70,
//
// 摘要:
// 对某个数字进行幂运算的复合赋值运算,如 Visual Basic 中的 (a ^= b)。
PowerAssign = 71,
//
// 摘要:
// 按位右移复合赋值运算,如 (a >>= b)。
RightShiftAssign = 72,
//
// 摘要:
// 减法复合赋值运算,如 (a -= b),针对数值操作数,不进行溢出检查。
SubtractAssign = 73,
//
// 摘要:
// 加法复合赋值运算,如 (a += b),针对数值操作数,进行溢出检查。
AddAssignChecked = 74,
//
// 摘要:
// 乘法复合赋值运算,如 (a *= b),针对数值操作数,进行溢出检查。
MultiplyAssignChecked = 75,
//
// 摘要:
// 减法复合赋值运算,如 (a -= b),针对数值操作数,进行溢出检查。
SubtractAssignChecked = 76,
//
// 摘要:
// 一元前缀递增,如 (++a)。 应就地修改 a 对象。
PreIncrementAssign = 77,
//
// 摘要:
// 一元前缀递减,如 (--a)。 应就地修改 a 对象。
PreDecrementAssign = 78,
//
// 摘要:
// 一元后缀递增,如 (a++)。 应就地修改 a 对象。
PostIncrementAssign = 79,
//
// 摘要:
// 一元后缀递减,如 (a--)。 应就地修改 a 对象。
PostDecrementAssign = 80,
//
// 摘要:
// 确切类型测试。
TypeEqual = 81,
//
// 摘要:
// 二进制反码运算,如 C# 中的 (~a)。
OnesComplement = 82,
//
// 摘要:
// true 条件值。
IsTrue = 83,
//
// 摘要:
// false 条件值。
IsFalse = 84
}
【C# 表达式树 三】ExpressionType 节点类型种类的更多相关文章
- C#3.0新增功能10 表达式树 03 支持表达式树的框架类型
连载目录 [已更新最新开发文章,点击查看详细] 存在可与表达式树配合使用的 .NET Core framework 中的类的大型列表. 可以在 System.Linq.Expressions 查 ...
- [.net 面向对象程序设计进阶] (6) Lamda表达式(二) 表达式树快速入门
[.net 面向对象程序设计进阶] (6) Lamda表达式(二) 表达式树快速入门 本节导读: 认识表达式树(Expression Tree),学习使用Lambda创建表达式树,解析表达式树. 学习 ...
- 转载:C#特性-表达式树
原文地址:http://www.cnblogs.com/tianfan/ 表达式树基础 刚接触LINQ的人往往觉得表达式树很不容易理解.通过这篇文章我希望大家看到它其实并不像想象中那么难.您只要有普通 ...
- C#特性-表达式树
表达式树ExpressionTree 表达式树基础 转载需注明出处:http://www.cnblogs.com/tianfan/ 刚接触LINQ的人往往觉得表达式树很不容易理解.通过这篇文章我希 ...
- C#编程(六十六)----------表达式树总结
表达式树总结 基础 表达式树提供了一个将可执行代码转换成数据的方法.如果你要在执行代码之前修改或转换此代码,那么它是很有用的.有其是当你要将C#代码----如LINQ查询表达式转换成其他代码在另一个程 ...
- C#高级编程六十六天----表达式树总结【转】
https://blog.csdn.net/shanyongxu/article/details/47257139 表达式树总结 基础 表达式树提供了一个将可执行代码转换成数据的方法.如果你要在执行代 ...
- 表达式树ExpressionTree
表达式树基础 转载需注明出处:http://www.cnblogs.com/tianfan/ 刚接触LINQ的人往往觉得表达式树很不容易理解.通过这篇文章我希望大家看到它其实并不像想象中那么难.您只要 ...
- C#中的Lambda表达式和表达式树
在C# 2.0中,通过方法组转换和匿名方法,使委托的实现得到了极大的简化.但是,匿名方法仍然有些臃肿,而且当代码中充满了匿名方法的时候,可读性可能就会受到影响.C# 3.0中出现的Lambda表达式在 ...
- Lambda表达式和表达式树
在C# 2.0中,通过方法组转换和匿名方法,使委托的实现得到了极大的简化.但是,匿名方法仍然有些臃肿,而且当代码中充满了匿名方法的时候,可读性可能就会受到影响.C# 3.0中出现的Lambda表达式在 ...
随机推荐
- SpringCloud之使用Zookeeper作为注册中心
SpringCloud之使用Zookeeper作为注册中心 linux安装zookeeper 安装zookeeper 关闭linux防火墙 启动zookeeper 1 创建项目导入依赖和配置文件 &l ...
- gin中绑定查询字符串或表单数据
package main import ( "github.com/gin-gonic/gin" "log" "time" ) type P ...
- 集合框架-工具类-JDK5.0特性-函数可变参数
1 package cn.itcast.p4.news.demo; 2 3 public class ParamterDemo { 4 5 public static void main(String ...
- 整理全网最全K8S集群管理工具、平台
整理常见的整理全网最全K8S集群管理工具.平台解决方案. 1 Rancher Rancher中文官网:https://docs.rancher.cn/ 2 KubeSphere 官网:https:// ...
- JavaWeb后端工程师技能图
- Python3 生成激活码
1.文档: string模块:https://docs.python.org/3/library/string.html random模块:https://docs.python.org/3/libr ...
- ubuntu16.04同时使用 pyhton2.7和3.5,并随意切换
ubuntu16.04中默认已经安装了python2.7和python3.5 hanli@ubuntu:/usr/bin$ ls |grep python dh_python2 dh_python3 ...
- 如何在pyqt中在实现无边框窗口的同时保留Windows窗口动画效果(一)
无边框窗体的实现思路 在pyqt中只要 self.setWindowFlags(Qt.FramelessWindowHint) 就可以实现边框的去除,但是没了标题栏也意味着窗口大小无法改变.窗口无法拖 ...
- TensorFlow 卷积神经网络实用指南 | iBooker·ApacheCN
原文:Hands-On Convolutional Neural Networks with TensorFlow 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 不要担心自己的形象,只关心 ...
- Win10 提示凭证不工作问题
感谢大佬:https://cloud.tencent.com/developer/article/1337081 在公司局域网远程自己计算机的时候,突然无法远程了,提示"您的凭据不工作 之前 ...