C# Expression 节点类型种类---枚举 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
    }

猜你喜欢

转载自blog.csdn.net/weixin_30589127/article/details/84634956