C# Expression 節點型別種類---列舉 ExpressionType
阿新 • • 發佈:2018-12-01
// // 摘要: // 描述表示式目錄樹的節點的節點型別。 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 }