1. 程式人生 > >C# Expression 節點型別種類---列舉 ExpressionType

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
    }