Expression 核心操作符、表达式、操作方法

C# 高级编程:Expression表达式 在 C# 中,表达式是由操作数、运算符和方法调用组成的代码片段,其目的是计算出一个值。简单来说,它是一种专门用来求值的语法实体。例如:​这里的3 + 5就是一个表达式,它通过加法运算符+对两个操作数3和5进行运算,最终得到一个整数值8,并赋值给变量result。​通过实现自定义 LINQ 提供程序,可以以特定的方式解释表达式树,并将其转换为不同的查询语言,如 SQL、NoSQL 甚至 REST API。 阅读详情

一、Expression中的操作运算符
  成员名称 说明
  Add
加法运算,如 a + b, ,不进行溢出检查,针对数值操作数。

  AddAssign
加法复合赋值运算,如 (a += b), ,不进行溢出检查,针对数值操作数。

  AddAssignChecked
加法复合赋值运算,如 (a += b), ,进行溢出检查,针对数值操作数。

  AddChecked
加法运算,如 (a + b), ,进行溢出检查,针对数值操作数。

  And
按位或逻辑 AND 操作,如 (a & b) 在 C# 和 (a And b) 在 Visual Basic 中。

  AndAlso
在条件 AND 仅当第一个操作数的计算结果为才计算第二个操作数的操作 true。 它对应于 (a && b) 在 C# 和 (a AndAlso b) 在 Visual Basic 中。

  AndAssign
按位或逻辑 AND 复合赋值运算,如 (a &= b) C# 中。

  ArrayIndex
索引操作在一维数组中,如 array[index] 在 C# 或 array(index) 在 Visual Basic 中。

  ArrayLength
获取一维数组的长度,如操作 array.Length。

  Assign
赋值运算,如 (a = b)。

  Block
表达式的块。

  Call
某个方法调用,如在 obj.sampleMethod() 表达式。

  Coalesce
一个表示空合并操作,如节点 (a ?? b) 在 C# 或 If(a, b) 在 Visual Basic 中。

  Conditional
条件运算,如 a > b ? a : b 在 C# 或 If(a > b, a, b) 在 Visual Basic 中。

  Constant
常量的值。

  Convert
强制转换或转换操作中,如 (SampleType)obj C# 中或 CType(obj, SampleType) 在 Visual Basic 中。 对于数值的转换,如果转换后的值对于目标类型来说太大不引发异常。

  ConvertChecked
强制转换或转换操作中,如 (SampleType)obj C# 中或 CType(obj, SampleType) 在 Visual Basic 中。 对于数值的转换,如果转换后的值不符合目标类型是引发异常。

  DebugInfo
调试信息。

  Decrement
一元递减操作,如 (a - 1) C# 和 Visual Basic 中。 该对象 a 不应就地修改。

  Default
默认值。

  Divide
除法运算,如 (a / b), ,针对数值操作数。

  DivideAssign
除的复合赋值运算,如 (a /= b), ,针对数值操作数。

  Dynamic
动态操作。

  Equal
一个表示相等比较,如节点 (a == b) 在 C# 或 (a = b) 在 Visual Basic 中。

  ExclusiveOr
按位或逻辑 XOR 操作,如 (a ^ b) 在 C# 或 (a Xor b) 在 Visual Basic 中。

  ExclusiveOrAssign
按位或逻辑 XOR 复合赋值运算,如 (a ^= b) C# 中。

  Extension
扩展表达式。

  Goto
一个"转到"表达式,如 goto Label 在 C# 或 GoTo Label 在 Visual Basic 中。

  GreaterThan
"大于"比较,如 (a > b)。

  GreaterThanOrEqual
"大于或等于"比较,如 (a >= b)。

  Increment
一元递增操作,如 (a + 1) C# 和 Visual Basic 中。 该对象 a 不应就地修改。

  Index
索引操作或访问不采用参数的属性的操作。

  Invoke
操作调用的委托或 lambda 表达式,如 sampleDelegate.Invoke()。

  IsFalse
一个 false 条件值。

  IsTrue
一个 true 条件值。

  Label
标签。

  Lambda
Lambda 表达式,如 a => a + a 在 C# 或 Function(a) a + a 在 Visual Basic 中。

  LeftShift
按位左移运算,如 (a << b)。

  LeftShiftAssign
按位左移复合赋值运算,如 (a <<= b)。

  LessThan
"小于"比较,如 (a < b)。

  LessThanOrEqual
"小于或等于"比较,如 (a <= b)。

  ListInit
创建一个新的操作的 IEnumerable 对象,并对其进行初始化从列表中的元素,如 new List<SampleType>(){ a, b, c } 在 C# 或 Dim sampleList = { a, b, c } 在 Visual Basic 中。

  Loop
一个循环,如 for 或 while。

  MemberAccess
从一个字段或属性,如读取操作 obj.SampleProperty。

  MemberInit
运算,创建一个新的对象并初始化一个或多个成员,如 new Point { X = 1, Y = 2 } 在 C# 或 New Point With {.X = 1, .Y = 2} 在 Visual Basic 中。

  Modulo
算术余数运算,如 (a % b) 在 C# 或 (a Mod b) 在 Visual Basic 中。

  ModuloAssign
算术余数复合赋值运算,如 (a %= b) C# 中。

  Multiply
乘法运算,如 (a * b), ,不进行溢出检查,针对数值操作数。

  MultiplyAssign
乘法复合赋值运算,如 (a *= b), ,不进行溢出检查,针对数值操作数。

  MultiplyAssignChecked
乘法复合赋值运算,如 (a *= b), ,,进行溢出检查,针对数值操作数。

  MultiplyChecked
乘法运算,如 (a * b), ,,进行溢出检查,针对数值操作数。

  Negate
算术求反运算,如 (-a)。 该对象 a 不应就地修改。

  NegateChecked
算术求反运算,如 (-a), ,,进行溢出检查。 该对象 a 不应就地修改。

  New
调用构造函数以创建新的对象,如操作 new SampleType()。

  NewArrayBounds
创建一个新数组,其中每个维度的下限指定,如操作 new SampleType[dim1, dim2] 在 C# 或 New SampleType(dim1, dim2) 在 Visual Basic 中。

  NewArrayInit
操作,创建一个新的一维数组并对其进行初始化从列表中的元素,如 new SampleType[]{a, b, c} 在 C# 或New SampleType(){a, b, c} 在 Visual Basic 中。

  Not
按位求补或逻辑求反运算。 在 C# 中,则等同于 (~a) 整型和 (!a) 布尔值。 在 Visual Basic 中,则等同于 (Not a)。 该对象 a 不应就地修改。

  NotEqual
不相等比较,如 (a != b) 在 C# 或 (a <> b) 在 Visual Basic 中。

  OnesComplement
一个二进制反码运算,如 (~a) C# 中。

  Or
按位或逻辑 OR 操作,如 (a | b) 在 C# 或 (a Or b) 在 Visual Basic 中。

  OrAssign
按位或逻辑 OR 复合赋值运算,如 (a |= b) C# 中。

  OrElse
短路条件 OR 操作,如 (a || b) 在 C# 或 (a OrElse b) 在 Visual Basic 中。

  Parameter
对参数或变量的表达式的上下文中定义的引用。 有关更多信息,请参见ParameterExpression。

  PostDecrementAssign
一元后缀递减,如 (a--)。 该对象 a 应就地修改。

  PostIncrementAssign
一元后缀递增,如 (a++)。 该对象 a 应就地修改。

  Power
如引发数字进行幂运算的数学运算 (a ^ b) 在 Visual Basic 中。

  PowerAssign
如引发数字进行幂运算的复合赋值运算 (a ^= b) 在 Visual Basic 中。

  PreDecrementAssign
一元前缀递减,如 (--a)。 该对象 a 应就地修改。

  PreIncrementAssign
一元前缀递增,如 (++a)。 该对象 a 应就地修改。

  Quote
具有类型的常量值的表达式 Expression。 一个 Quote 节点可以包含对它所代表的表达式的上下文中定义的参数的引用。

  RightShift
按位右移运算,如 (a >> b)。

  RightShiftAssign
按位右移复合赋值运算,如 (a >>= b)。

  RuntimeVariables
运行时变量的列表。 有关详细信息,请参阅RuntimeVariablesExpression。

  Subtract
减法运算,如 (a - b), ,不进行溢出检查,针对数值操作数。

  SubtractAssign
减法复合赋值运算,如 (a -= b), ,不进行溢出检查,针对数值操作数。

  SubtractAssignChecked
减法复合赋值运算,如 (a -= b), ,,进行溢出检查,针对数值操作数。

  SubtractChecked
算术减法运算,如 (a - b), ,,进行溢出检查,针对数值操作数。

  Switch
一个切换操作,如 switch 在 C# 或 Select Case 在 Visual Basic 中。

  Throw
引发异常,如操作 throw new Exception()。

  Try
一个 try-catch 表达式。

  TypeAs
显式引用或装箱转换在其中 null 如果转换失败,如提供 (obj as SampleType) 在 C# 或 TryCast(obj, SampleType) 在 Visual Basic 中。

  TypeEqual
确切类型测试。

  TypeIs
一种类型测试,如 obj is SampleType 在 C# 或 TypeOf obj is SampleType 在 Visual Basic 中。

  UnaryPlus
一元正运算,如 (+a)。 预定义的一元正运算的结果是操作数的值,但用户定义的实现可能有不寻常的结果。

  Unbox
取消装箱值类型的操作,如 unbox 和 unbox.any MSIL 中的说明。

二、Expression分类与操作运算符
Expression 操作说明
BinaryExpression 表示具有二进制运算符的表达式
UnaryExpression 表示具有一元运算符的表达式
BlockExpression 表示包含一个表达式序列的块,表达式中可定义变量
ConditionalExpression 表示具有条件运算符的表达式
ConstantExpression 表示具有常数值的表达式
DefaultExpression 表示一个类型或空表达式的默认值
DynamicExpression 表示一个动态操作
GotoExpression 表示无条件跳转。 这包括返回语句,break 和 continue 语句以及其他跳转。
IndexExpression 表示对一个属性或数组进行索引
InvocationExpression 表示一个将委托或 lambda 表达式应用到一个自变量表达式列表的表达式
LabelExpression 表示一个标签,可以放置在任何 Expression 上下文。 如果它跳转到,它会提供相应的值 GotoExpression。 否则,它接收中的值 DefaultValue。 如果 Type 等于 System.Void,则应提供任何值
LambdaExpression 介绍 lambda 表达式。 它捕获一个类似于 .NET 方法主体的代码块
ListInitExpression 表示具有集合初始值设定项的构造函数调用
LoopExpression 表示无限循环。 可通过“中断”退出该循环
MemberExpression 表示访问字段或属性
MemberInitExpression 表示调用构造函数并初始化新对象的一个或多个成员
MethodCallExpression 表示对静态方法或实例方法的调用
NewArrayExpression 表示创建一个新数组,并可能初始化该新数组的元素
NewExpression 表示一个构造函数调用
ParameterExpression 表示一个命名的参数表达式
SwitchExpression 表示通过将控制权传递给处理多个选择的控件表达式 SwitchCase
TryExpression 表示一个 try/catch/finally/fault 块
TypeBinaryExpression 表示表达式和类型之间的操作
三、Expression的操作方法
  名称 说明
Accept(ExpressionVisitor)
调度到此节点类型的特定 Visit 方法。 例如,MethodCallExpression 调用 VisitMethodCall。

Expression) Add(Expression,
创建一个表示不进行溢出检查的算术加法运算的 BinaryExpression。

MethodInfo) Expression, Add(Expression,
创建一个表示不进行溢出检查的算术加法运算的 BinaryExpression。 可指定实现方法。

Expression) AddAssign(Expression,
创建一个表示不进行溢出检查的加法赋值运算的 BinaryExpression。

MethodInfo) Expression, AddAssign(Expression,
创建一个表示不进行溢出检查的加法赋值运算的 BinaryExpression。

LambdaExpression) MethodInfo, Expression, AddAssign(Expression,
创建一个表示不进行溢出检查的加法赋值运算的 BinaryExpression。

Expression) AddAssignChecked(Expression,
创建一个表示进行溢出检查的加法赋值运算的 BinaryExpression。

MethodInfo) Expression, AddAssignChecked(Expression,
创建一个表示进行溢出检查的加法赋值运算的 BinaryExpression。

LambdaExpression) MethodInfo, Expression, AddAssignChecked(Expression,
创建一个表示进行溢出检查的加法赋值运算的 BinaryExpression。

Expression) AddChecked(Expression,
创建一个表示进行溢出检查的算术加法运算的 BinaryExpression。

MethodInfo) Expression, AddChecked(Expression,
创建一个表示进行溢出检查的算术加法运算的 BinaryExpression。 可指定实现方法。

Expression) And(Expression,
创建一个表示按位 BinaryExpression 运算的 AND。

MethodInfo) Expression, And(Expression,
创建一个表示按位 BinaryExpression 运算的 AND。 可指定实现方法。

Expression) AndAlso(Expression,
创建一个 BinaryExpression,它表示仅在第一个操作数的计算结果为 AND 时才计算第二个操作数的条件 true 运算。

MethodInfo) Expression, AndAlso(Expression,
创建一个 BinaryExpression,它表示仅在第一个操作数解析为 true 时,才计算第二个操作数的条件 AND 运算。 可指定实现方法。

Expression) AndAssign(Expression,
创建一个表示按位 AND 赋值运算的 BinaryExpression。

MethodInfo) Expression, AndAssign(Expression,
创建一个表示按位 AND 赋值运算的 BinaryExpression。

LambdaExpression) MethodInfo, Expression, AndAssign(Expression,
创建一个表示按位 AND 赋值运算的 BinaryExpression。

Expression[]) ArrayAccess(Expression,
创建一个用于访问数组的 IndexExpression。

IEnumerable ArrayAccess(Expression,<Expression>)
创建一个用于访问多维数组的 IndexExpression。

Expression) ArrayIndex(Expression,
创建一个 BinaryExpression,它表示将数组索引运算符应用到级别一的数组中。

Expression[]) ArrayIndex(Expression,
创建一个 MethodCallExpression,它表示将数组索引运算符应用到多维数组中。

IEnumerable ArrayIndex(Expression,<Expression>)
创建一个 MethodCallExpression,它表示将数组索引运算符应用到多个级别的数组中。

ArrayLength(Expression)
创建一个 UnaryExpression,它表示获取一维数组的长度的表达式。

Expression) Assign(Expression,
创建一个表示赋值运算的 BinaryExpression。

Expression) Bind(MemberInfo,
创建一个 MemberAssignment,它表示字段或属性的初始化。

Expression) Bind(MethodInfo,
使用属性访问器方法,创建一个表示成员初始化的 MemberAssignment。

Expression) Block(Expression,
创建一个 BlockExpression,其中包含两个表达式,但不包含任何变量。

Expression) Expression, Block(Expression,
创建一个 BlockExpression,其中包含三个表达式,但不包含任何变量。

Expression) Expression, Expression, Block(Expression,
创建一个 BlockExpression,其中包含四个表达式,但不包含任何变量。

Expression) Expression, Expression, Expression, Block(Expression,
创建一个 BlockExpression,其中包含五个表达式,但不包含任何变量。

Block(Expression[])
创建一个 BlockExpression,其中包含给定表达式,但不包含任何变量。

Block(IEnumerable<Expression>)
创建一个 BlockExpression,其中包含给定表达式,但不包含任何变量。

Block(IEnumerable<ParameterExpression>Expression[]) ,
创建一个 BlockExpression,其中包含给定的变量和表达式。

Block(IEnumerable<ParameterExpression>IEnumerable ,<Expression>)
创建一个 BlockExpression,其中包含给定的变量和表达式。

Expression[]) Block(Type,
创建一个 BlockExpression,其中包含给定表达式和特定结果类型,但不包含任何变量。

IEnumerable Block(Type,<Expression>)
创建一个 BlockExpression,其中包含给定表达式和特定结果类型,但不包含任何变量。

IEnumerable Block(Type,<ParameterExpression>Expression[]) ,
创建一个 BlockExpression,其中包含给定的变量和表达式。

IEnumerable Block(Type,<ParameterExpression>IEnumerable ,<Expression>)
创建一个 BlockExpression,其中包含给定的变量和表达式。

Break(LabelTarget)
创建一个表示 break 语句的 GotoExpression。

Expression) Break(LabelTarget,
创建一个表示 break 语句的 GotoExpression。 可以指定在跳转时传递给标签的值。

Type) Expression, Break(LabelTarget,
创建一个表示具有指定类型的 break 语句的 GotoExpression。 可以指定在跳转时传递给标签的值。

Type) Break(LabelTarget,
创建一个表示具有指定类型的 break 语句的 GotoExpression。

MethodInfo) Call(Expression,
创建一个 MethodCallExpression,它表示调用不带参数的方法。

Expression) Expression, MethodInfo, Call(Expression,
创建一个 MethodCallExpression,它表示对采用两个参数的方法的调用。

Expression) Expression, Expression, MethodInfo, Call(Expression,
创建一个 MethodCallExpression,它表示对使用三个参数的方法的调用。

Expression[]) MethodInfo, Call(Expression,
创建一个表示调用带参数的方法的 MethodCallExpression。

IEnumerable MethodInfo, Call(Expression,<Expression>)
创建一个表示调用带参数的方法的 MethodCallExpression。

Expression[]) Type[], String, Call(Expression,
通过调用合适的工厂方法,创建一个 MethodCallExpression,它表示方法调用。

Expression) Call(MethodInfo,
创建一个 MethodCallExpression,它表示对使用一个参数的 static 方法(在 Visual Basic 中为 Shared 方法)的调用。

Expression) Expression, Call(MethodInfo,
创建一个 MethodCallExpression,它表示对使用两个参数的静态方法的调用。

Expression) Expression, Expression, Call(MethodInfo,
创建一个 MethodCallExpression,它表示对使用三个参数的静态方法的调用。

Expression) Expression, Expression, Expression, Call(MethodInfo,
创建一个 MethodCallExpression,它表示对使用四个参数的静态方法的调用。

Expression) Expression, Expression, Expression, Expression, Call(MethodInfo,
创建一个 MethodCallExpression,它表示对使用五个参数的静态方法的调用。

Expression[]) Call(MethodInfo,
创建一个 MethodCallExpression,它表示调用有参数的 static(在 Visual Basic 中为 Shared)方法。

IEnumerable Call(MethodInfo,<Expression>)
创建一个 MethodCallExpression,它表示对 static 方法(在 Visual Basic 中为 Shared 方法)的调用。

Expression[]) Type[], String, Call(Type,
通过调用合适的工厂方法,创建一个 MethodCallExpression,它表示对 static(在 Visual Basic 中为 Shared)方法的调用。

Expression) Catch(ParameterExpression,
创建一个表示 catch 语句的 CatchBlock,其中具有对已捕获的 Exception 对象的引用以便在处理程序主体中使用。

Expression) Expression, Catch(ParameterExpression,
创建一个表示 catch 语句的 CatchBlock,其中具有 Exception 筛选器和对已捕获的 Exception 对象的引用。

Expression) Catch(Type,
创建一个表示 catch 语句的 CatchBlock。

Expression) Expression, Catch(Type,
创建一个表示 catch 语句的 CatchBlock,其中具有 Exception 筛选器,但没有对已捕获的 Exception 对象的引用。

ClearDebugInfo(SymbolDocumentInfo)
创建一个用于清除序列点的 DebugInfoExpression。

Expression) Coalesce(Expression,
创建一个表示合并运算的 BinaryExpression。

LambdaExpression) Expression, Coalesce(Expression,
在给定转换函数的情况下,创建一个表示合并运算的 BinaryExpression。

Expression) Expression, Condition(Expression,
创建一个表示条件语句的 ConditionalExpression。

Type) Expression, Expression, Condition(Expression,
创建一个表示条件语句的 ConditionalExpression。

Constant(Object)
创建一个 ConstantExpression,它把 Value 属性设置为指定值。

Type) Constant(Object,
创建一个 ConstantExpression,它把 Value 和 Type 属性设置为指定值。

Continue(LabelTarget)
创建一个表示 continue 语句的 GotoExpression。

Type) Continue(LabelTarget,
创建一个表示具有指定类型的 continue 语句的 GotoExpression。

Type) Convert(Expression,
创建一个表示类型转换运算的 UnaryExpression。

MethodInfo) Type, Convert(Expression,
创建一个 UnaryExpression,它表示为其指定实现方法的转换运算。

Type) ConvertChecked(Expression,
创建一个 UnaryExpression,它表示在目标类型发生溢出时引发异常的转换运算。

MethodInfo) Type, ConvertChecked(Expression,
创建一个 UnaryExpression,它表示在目标类型发生溢出时引发异常且为其指定实现方法的转换运算。

Int32) Int32, Int32, Int32, DebugInfo(SymbolDocumentInfo,
创建一个具有指定跨度的 DebugInfoExpression。

Decrement(Expression)
创建一个 UnaryExpression,它表示按 1 递减表达式值。

MethodInfo) Decrement(Expression,
创建一个 UnaryExpression,它表示按 1 递减表达式值。

Default(Type)
创建一个 DefaultExpression,Type 属性设置为指定类型。

Expression) Divide(Expression,
创建一个表示算术除法运算的 BinaryExpression。

MethodInfo) Expression, Divide(Expression,
创建一个表示算术除法运算的 BinaryExpression。 可指定实现方法。

Expression) DivideAssign(Expression,
创建一个表示不进行溢出检查的除法赋值运算的 BinaryExpression。

MethodInfo) Expression, DivideAssign(Expression,
创建一个表示不进行溢出检查的除法赋值运算的 BinaryExpression。

LambdaExpression) MethodInfo, Expression, DivideAssign(Expression,
创建一个表示不进行溢出检查的除法赋值运算的 BinaryExpression。

Expression) Type, Dynamic(CallSiteBinder,
创建一个 DynamicExpression,它表示由提供的 CallSiteBinder 绑定的动态操作。

Expression) Expression, Type, Dynamic(CallSiteBinder,
创建一个 DynamicExpression,它表示由提供的 CallSiteBinder 绑定的动态操作。

Expression) Expression, Expression, Type, Dynamic(CallSiteBinder,
创建一个 DynamicExpression,它表示由提供的 CallSiteBinder 绑定的动态操作。

Expression) Expression, Expression, Expression, Type, Dynamic(CallSiteBinder,
创建一个 DynamicExpression,它表示由提供的 CallSiteBinder 绑定的动态操作。

Expression[]) Type, Dynamic(CallSiteBinder,
创建一个 DynamicExpression,它表示由提供的 CallSiteBinder 绑定的动态操作。

IEnumerable Type, Dynamic(CallSiteBinder,<Expression>)
创建一个 DynamicExpression,它表示由提供的 CallSiteBinder 绑定的动态操作。

Expression[]) ElementInit(MethodInfo,
在给定值数组作为第二个参数的情况下,创建一个 ElementInit。

IEnumerable ElementInit(MethodInfo,<Expression>)
在给定 ElementInit 作为第二个参数的情况下,创建一个 IEnumerable<T>。

Empty()
创建具有 Void 类型的空表达式。

Expression) Equal(Expression,
创建一个表示相等比较的 BinaryExpression。

MethodInfo) Boolean, Expression, Equal(Expression,
创建一个表示相等比较的 BinaryExpression。 可指定实现方法。

Equals(Object)
确定指定的对象是否等于当前对象。(继承自 Object。)

Expression) ExclusiveOr(Expression,
通过对用户定义的类型使用 BinaryExpression,创建一个表示按位 XOR 运算的 op_ExclusiveOr。

MethodInfo) Expression, ExclusiveOr(Expression,
通过对用户定义的类型使用 BinaryExpression,创建一个表示按位 XOR 运算的 op_ExclusiveOr。 可指定实现方法。

Expression) ExclusiveOrAssign(Expression,
通过对用户定义的类型使用 BinaryExpression,创建一个表示按位 XOR 赋值运算的 op_ExclusiveOr。

MethodInfo) Expression, ExclusiveOrAssign(Expression,
通过对用户定义的类型使用 BinaryExpression,创建一个表示按位 XOR 赋值运算的 op_ExclusiveOr。

LambdaExpression) MethodInfo, Expression, ExclusiveOrAssign(Expression,
通过对用户定义的类型使用 BinaryExpression,创建一个表示按位 XOR 赋值运算的 op_ExclusiveOr。

FieldInfo) Field(Expression,
创建一个表示访问字段的 MemberExpression。

String) Field(Expression,
在给定字段名称的情况下,创建一个表示访问此字段的 MemberExpression。

String) Type, Field(Expression,
创建一个表示访问字段的 MemberExpression。

Finalize()
在垃圾回收将某一对象回收前允许该对象尝试释放资源并执行其他清理操作。(继承自 Object。)

GetActionType(Type[])
创建一个 Type 对象,它表示具有特定类型参数的泛型 System.Action 委托类型。

GetDelegateType(Type[])
获取一个 Type 对象,它表示具有特定类型参数的泛型 System.Func 或 System.Action 委托类型。

GetFuncType(Type[])
创建一个 Type 对象,它表示具有特定类型参数的泛型 System.Func 委托类型。 最后一个类型参数指定已创建委托的返回类型。

GetHashCode()
作为默认哈希函数。(继承自 Object。)

GetType()
获取当前实例的 Type。(继承自 Object。)

Goto(LabelTarget)
创建一个表示“go to”语句的 GotoExpression。

Expression) Goto(LabelTarget,
创建一个表示“go to”语句的 GotoExpression。 可以指定在跳转时传递给标签的值。

Type) Expression, Goto(LabelTarget,
创建一个表示具有指定类型的“go to”语句的 GotoExpression。 可以指定在跳转时传递给标签的值。

Type) Goto(LabelTarget,
创建一个表示具有指定类型的“go to”语句的 GotoExpression。

Expression) GreaterThan(Expression,
创建一个表示“大于”数值比较的 BinaryExpression。

MethodInfo) Boolean, Expression, GreaterThan(Expression,
创建一个表示“大于”数值比较的 BinaryExpression。 可指定实现方法。

Expression) GreaterThanOrEqual(Expression,
创建一个表示“大于或等于”数值比较的 BinaryExpression。

MethodInfo) Boolean, Expression, GreaterThanOrEqual(Expression,
创建一个表示“大于或等于”数值比较的 BinaryExpression。

Expression) IfThen(Expression,
创建一个 ConditionalExpression,它表示带 if 语句的条件块。

Expression) Expression, IfThenElse(Expression,
创建一个 ConditionalExpression,它表示带 if 和 else 语句的条件块。

Increment(Expression)
创建一个 UnaryExpression,它表示按 1 递增表达式值。

MethodInfo) Increment(Expression,
创建一个 UnaryExpression,它表示按 1 递增表达式值。

Expression[]) Invoke(Expression,
创建一个 InvocationExpression,它将委托或 lambda 表达式应用于一个参数表达式列表。

IEnumerable Invoke(Expression,<Expression>)
创建一个 InvocationExpression,它将委托或 lambda 表达式应用于一个参数表达式列表。

IsFalse(Expression)
返回表达式的计算结果是否为 false。

MethodInfo) IsFalse(Expression,
返回表达式的计算结果是否为 false。

IsTrue(Expression)
返回表达式的计算结果是否为 true。

MethodInfo) IsTrue(Expression,
返回表达式的计算结果是否为 true。

Label()
创建一个 LabelTarget,它表示具有 void 类型但没有名称的标签。

Label(LabelTarget)
创建一个LabelExpression,它表示不带默认值的标签。

Expression) Label(LabelTarget,
创建一个 LabelExpression,它表示具有给定默认值的标签。

Label(String)
创建一个 LabelTarget,它表示具有 void 类型和给定名称的标签。

Label(Type)
创建一个 LabelTarget,它表示具有给定类型的标签。

String) Label(Type,
创建一个 LabelTarget,它表示具有给定类型和名称的标签。

IEnumerable Boolean, Lambda(Expression,<ParameterExpression>)
通过先构造一个委托类型来创建一个 LambdaExpression。

ParameterExpression[]) Boolean, Lambda(Expression,
通过先构造一个委托类型来创建一个 LambdaExpression。

IEnumerable Lambda(Expression,<ParameterExpression>)
通过先构造一个委托类型来创建一个 LambdaExpression。

ParameterExpression[]) Lambda(Expression,
通过先构造一个委托类型来创建一个 LambdaExpression。

IEnumerable Boolean, String, Lambda(Expression,<ParameterExpression>)
通过先构造一个委托类型来创建一个 LambdaExpression。

IEnumerable String, Lambda(Expression,<ParameterExpression>)
通过先构造一个委托类型来创建一个 LambdaExpression。

IEnumerable Boolean, Expression, Lambda(Type,<ParameterExpression>)
通过先构造一个委托类型来创建一个 LambdaExpression。

ParameterExpression[]) Boolean, Expression, Lambda(Type,
通过先构造一个委托类型来创建一个 LambdaExpression。

IEnumerable Expression, Lambda(Type,<ParameterExpression>)
通过先构造一个委托类型来创建一个 LambdaExpression。 如果委托类型在编译时未知,则可以使用它。

ParameterExpression[]) Expression, Lambda(Type,
通过先构造一个委托类型来创建一个 LambdaExpression。 如果委托类型在编译时未知,则可以使用它。

IEnumerable Boolean, String, Expression, Lambda(Type,<ParameterExpression>)
通过先构造一个委托类型来创建一个 LambdaExpression。

IEnumerable String, Expression, Lambda(Type,<ParameterExpression>)
通过先构造一个委托类型来创建一个 LambdaExpression。

Lambda<TDelegate>IEnumerable Boolean, (Expression,<ParameterExpression>)
创建一个在编译时委托类型已知的 Expression<TDelegate>。

Lambda<TDelegate>ParameterExpression[]) Boolean, (Expression,
创建一个在编译时委托类型已知的 Expression<TDelegate>。

Lambda<TDelegate>IEnumerable (Expression,<ParameterExpression>)
创建一个在编译时委托类型已知的 Expression<TDelegate>。

Lambda<TDelegate>ParameterExpression[]) (Expression,
创建一个在编译时委托类型已知的 Expression<TDelegate>。

Lambda<TDelegate>IEnumerable Boolean, String, (Expression,<ParameterExpression>)
创建一个在编译时委托类型已知的 Expression<TDelegate>。

Lambda<TDelegate>IEnumerable String, (Expression,<ParameterExpression>)
创建一个在编译时委托类型已知的 Expression<TDelegate>。

Expression) LeftShift(Expression,
创建一个表示按位左移运算的 BinaryExpression。

MethodInfo) Expression, LeftShift(Expression,
创建一个表示按位左移运算的 BinaryExpression。

Expression) LeftShiftAssign(Expression,
创建一个表示按位左移赋值运算的 BinaryExpression。

MethodInfo) Expression, LeftShiftAssign(Expression,
创建一个表示按位左移赋值运算的 BinaryExpression。

LambdaExpression) MethodInfo, Expression, LeftShiftAssign(Expression,
创建一个表示按位左移赋值运算的 BinaryExpression。

Expression) LessThan(Expression,
创建一个表示“小于”数值比较的 BinaryExpression。

MethodInfo) Boolean, Expression, LessThan(Expression,
创建一个表示“小于”数值比较的 BinaryExpression。

Expression) LessThanOrEqual(Expression,
创建一个表示“小于或等于”数值比较的 BinaryExpression。

MethodInfo) Boolean, Expression, LessThanOrEqual(Expression,
创建一个表示“小于或等于”数值比较的 BinaryExpression。

ElementInit[]) ListBind(MemberInfo,
创建一个其成员为字段或属性的 MemberListBinding。

IEnumerable ListBind(MemberInfo,<ElementInit>)
创建一个其成员为字段或属性的 MemberListBinding。

ElementInit[]) ListBind(MethodInfo,
基于指定的属性访问器方法创建一个 MemberListBinding 对象。

IEnumerable ListBind(MethodInfo,<ElementInit>)
基于指定的属性访问器方法创建一个 MemberListBinding。

ElementInit[]) ListInit(NewExpression,
创建一个使用指定 ListInitExpression 对象来初始化集合的 ElementInit。

Expression[]) ListInit(NewExpression,
创建一个使用名为“Add”的方法将元素添加到集合中的ListInitExpression。

IEnumerable ListInit(NewExpression,<ElementInit>)
创建一个使用指定 ListInitExpression 对象来初始化集合的 ElementInit。

IEnumerable ListInit(NewExpression,<Expression>)
创建一个使用名为“Add”的方法将元素添加到集合中的 ListInitExpression。

Expression[]) MethodInfo, ListInit(NewExpression,
创建一个使用指定方法将元素添加到集合中的 ListInitExpression。

IEnumerable MethodInfo, ListInit(NewExpression,<Expression>)
创建一个使用指定方法将元素添加到集合中的 ListInitExpression。

Loop(Expression)
创建具有给定主体的 LoopExpression。

LabelTarget) Loop(Expression,
创建具有给定主体和中断目标的 LoopExpression。

LabelTarget) LabelTarget, Loop(Expression,
创建具有给定主体的 LoopExpression。

Expression) Expression, MakeBinary(ExpressionType,
在给定左操作数和右操作数的情况下,通过调用适当的工厂方法来创建一个 BinaryExpression。

MethodInfo) Boolean, Expression, Expression, MakeBinary(ExpressionType,
在给定左操作数、右操作数和实现方法的情况下,通过调用适当的工厂方法来创建一个 BinaryExpression。

LambdaExpression) MethodInfo, Boolean, Expression, Expression, MakeBinary(ExpressionType,
在给定左操作数、右操作数、实现方法和类型转换函数的情况下,通过调用适当的工厂方法来创建一个 BinaryExpression。

Expression) Expression, ParameterExpression, MakeCatchBlock(Type,
创建一个表示具有指定元素的 catch 语句的 CatchBlock。

Expression) CallSiteBinder, MakeDynamic(Type,
创建一个 DynamicExpression,它表示由提供的 CallSiteBinder 和一个参数绑定的动态操作。

Expression) Expression, CallSiteBinder, MakeDynamic(Type,
创建一个 DynamicExpression,它表示由提供的 CallSiteBinder 和两个参数绑定的动态操作。

Expression) Expression, Expression, CallSiteBinder, MakeDynamic(Type,
创建一个 DynamicExpression,它表示由提供的 CallSiteBinder 和三个参数绑定的动态操作。

Expression) Expression, Expression, Expression, CallSiteBinder, MakeDynamic(Type,
创建一个 DynamicExpression,它表示由提供的 CallSiteBinder 和四个参数绑定的动态操作。

Expression[]) CallSiteBinder, MakeDynamic(Type,
创建一个 DynamicExpression,它表示由提供的 CallSiteBinder 绑定的动态操作。

IEnumerable CallSiteBinder, MakeDynamic(Type,<Expression>)
创建一个 DynamicExpression,它表示由提供的 CallSiteBinder 绑定的动态操作。

Type) Expression, LabelTarget, MakeGoto(GotoExpressionKind,
创建一个 GotoExpression,它表示指定的 GotoExpressionKind 的跳转。 也可以指定在跳转时传递给标签的值。

IEnumerable PropertyInfo, MakeIndex(Expression,<Expression>)
创建一个 IndexExpression,它表示访问对象中的索引属性。

MemberInfo) MakeMemberAccess(Expression,
创建一个表示访问字段或属性的 MemberExpression。

IEnumerable Expression, Expression, Expression, MakeTry(Type,<CatchBlock>)
创建一个表示具有指定元素的 try 块的 TryExpression。

Type) Expression, MakeUnary(ExpressionType,
在给定操作数的情况下,通过调用适当的工厂方法来创建一个 UnaryExpression。

MethodInfo) Type, Expression, MakeUnary(ExpressionType,
在给定操作数和实现方法的情况下,通过调用适当的工厂方法来创建一个 UnaryExpression。

IEnumerable MemberBind(MemberInfo,<MemberBinding>)
创建一个表示递归初始化某个字段或属性的成员的 MemberMemberBinding。

MemberBinding[]) MemberBind(MemberInfo,
创建一个表示递归初始化某个字段或属性的成员的 MemberMemberBinding。

IEnumerable MemberBind(MethodInfo,<MemberBinding>)
使用属性访问器方法创建一个表示对所访问的成员的成员进行递归初始化的 MemberMemberBinding。

MemberBinding[]) MemberBind(MethodInfo,
使用属性访问器方法创建一个表示对所访问的成员的成员进行递归初始化的 MemberMemberBinding。

IEnumerable MemberInit(NewExpression,<MemberBinding>)
表示一个表达式,该表达式创建新对象并初始化该对象的一个属性。

MemberBinding[]) MemberInit(NewExpression,
创建一个 MemberInitExpression。

MemberwiseClone()
创建当前 Object 的浅表副本。(继承自 Object。)

Expression) Modulo(Expression,
创建一个表示算术余数运算的 BinaryExpression。

MethodInfo) Expression, Modulo(Expression,
创建一个表示算术余数运算的 BinaryExpression。

Expression) ModuloAssign(Expression,
创建一个表示余数赋值运算的 BinaryExpression。

MethodInfo) Expression, ModuloAssign(Expression,
创建一个表示余数赋值运算的 BinaryExpression。

LambdaExpression) MethodInfo, Expression, ModuloAssign(Expression,
创建一个表示余数赋值运算的 BinaryExpression。

Expression) Multiply(Expression,
创建一个表示不进行溢出检查的算术乘法运算的 BinaryExpression。

MethodInfo) Expression, Multiply(Expression,
创建一个表示不进行溢出检查的算术乘法运算的 BinaryExpression。

Expression) MultiplyAssign(Expression,
创建一个表示不进行溢出检查的乘法赋值运算的 BinaryExpression。

MethodInfo) Expression, MultiplyAssign(Expression,
创建一个表示不进行溢出检查的乘法赋值运算的 BinaryExpression。

LambdaExpression) MethodInfo, Expression, MultiplyAssign(Expression,
创建一个表示不进行溢出检查的乘法赋值运算的 BinaryExpression。

Expression) MultiplyAssignChecked(Expression,
创建一个表示进行溢出检查的乘法赋值运算的 BinaryExpression。

MethodInfo) Expression, MultiplyAssignChecked(Expression,
创建一个表示进行溢出检查的乘法赋值运算的 BinaryExpression。

LambdaExpression) MethodInfo, Expression, MultiplyAssignChecked(Expression,
创建一个表示进行溢出检查的乘法赋值运算的 BinaryExpression。

Expression) MultiplyChecked(Expression,
创建一个表示进行溢出检查的算术乘法运算的 BinaryExpression。

MethodInfo) Expression, MultiplyChecked(Expression,
创建一个表示进行溢出检查的算术乘法运算的 BinaryExpression。

Negate(Expression)
创建一个表示算术求反运算的 UnaryExpression。

MethodInfo) Negate(Expression,
创建一个表示算术求反运算的 UnaryExpression。

NegateChecked(Expression)
创建一个表示进行溢出检查的算术求反运算的 UnaryExpression。

MethodInfo) NegateChecked(Expression,
创建一个表示进行溢出检查的算术求反运算的 UnaryExpression。 可指定实现方法。

New(ConstructorInfo)
创建一个表示调用不带参数的指定构造函数的 NewExpression。

Expression[]) New(ConstructorInfo,
创建一个表示调用带指定参数的指定构造函数的 NewExpression。

IEnumerable New(ConstructorInfo,<Expression>)
创建一个表示调用带指定参数的指定构造函数的 NewExpression。

IEnumerable New(ConstructorInfo,<Expression>IEnumerable ,<MemberInfo>)
创建一个表示调用带指定参数的指定构造函数的 NewExpression。 其中指定了访问构造函数初始化的字段的成员。

IEnumerable New(ConstructorInfo,<Expression>MemberInfo[]) ,
创建一个表示调用带指定参数的指定构造函数的 NewExpression。 将访问构造函数初始化字段的成员指定为数组。

New(Type)
创建一个表示调用指定类型的无参数构造函数的 NewExpression。

Expression[]) NewArrayBounds(Type,
创建一个表示创建具有指定秩的数组的 NewArrayExpression。

IEnumerable NewArrayBounds(Type,<Expression>)
创建一个表示创建具有指定秩的数组的 NewArrayExpression。

Expression[]) NewArrayInit(Type,
创建一个表示创建一维数组并使用元素列表初始化该数组的 NewArrayExpression。

IEnumerable NewArrayInit(Type,<Expression>)
创建一个表示创建一维数组并使用元素列表初始化该数组的 NewArrayExpression。

Not(Expression)
创建一个表示按位求补运算的 UnaryExpression。

MethodInfo) Not(Expression,
创建一个表示按位求补运算的 UnaryExpression。 可指定实现方法。

Expression) NotEqual(Expression,
创建一个表示不相等比较的 BinaryExpression。

MethodInfo) Boolean, Expression, NotEqual(Expression,
创建一个表示不相等比较的 BinaryExpression。

OnesComplement(Expression)
返回表示一的补数的表达式。

MethodInfo) OnesComplement(Expression,
返回表示一的补数的表达式。

Expression) Or(Expression,
创建一个表示按位 BinaryExpression 运算的 OR。

MethodInfo) Expression, Or(Expression,
创建一个表示按位 BinaryExpression 运算的 OR。

Expression) OrAssign(Expression,
创建一个表示按位 OR 赋值运算的 BinaryExpression。

MethodInfo) Expression, OrAssign(Expression,
创建一个表示按位 OR 赋值运算的 BinaryExpression。

LambdaExpression) MethodInfo, Expression, OrAssign(Expression,
创建一个表示按位 OR 赋值运算的 BinaryExpression。

Expression) OrElse(Expression,
创建一个 BinaryExpression,它表示仅在第一个操作数的计算结果为 OR 时才计算第二个操作数的条件 false 运算。

MethodInfo) Expression, OrElse(Expression,
创建一个 BinaryExpression,它表示仅在第一个操作数的计算结果为 OR 时才计算第二个操作数的条件 false 运算。

Parameter(Type)
创建一个 ParameterExpression 节点,该节点可用于标识表达式树中的参数或变量。

ParaString) meter(Type,
创建一个 ParameterExpression 节点,该节点可用于标识表达式树中的参数或变量。

PostDecrementAssign(Expression)
创建一个 UnaryExpression,它表示将原始表达式递减 1 之后再进行表达式赋值。

MethodInfo) PostDecrementAssign(Expression,
创建一个 UnaryExpression,它表示将原始表达式递减 1 之后再进行表达式赋值。

PostIncrementAssign(Expression)
创建一个 UnaryExpression,它表示将原始表达式递增 1 之后再进行表达式赋值。

MethodInfo) PostIncrementAssign(Expression,
创建一个 UnaryExpression,它表示将原始表达式递增 1 之后再进行表达式赋值。

Expression) Power(Expression,
创建一个表示对数进行幂运算的 BinaryExpression。

MethodInfo) Expression, Power(Expression,
创建一个表示对数进行幂运算的 BinaryExpression。

Expression) PowerAssign(Expression,
创建一个 BinaryExpression,它表示对表达式求幂并将结果赋回给表达式。

MethodInfo) Expression, PowerAssign(Expression,
创建一个 BinaryExpression,它表示对表达式求幂并将结果赋回给表达式。

LambdaExpression) MethodInfo, Expression, PowerAssign(Expression,
创建一个 BinaryExpression,它表示对表达式求幂并将结果赋回给表达式。

PreDecrementAssign(Expression)
创建一个 UnaryExpression,它将表达式递减 1 并将结果赋回给表达式。

MethodInfo) PreDecrementAssign(Expression,
创建一个 UnaryExpression,它将表达式递减 1 并将结果赋回给表达式。

PreIncrementAssign(Expression)
创建一个 UnaryExpression,它将表达式递增 1 并将结果赋回给表达式。

MethodInfo) PreIncrementAssign(Expression,
创建一个 UnaryExpression,它将表达式递增 1 并将结果赋回给表达式。

MethodInfo) Property(Expression,
使用属性访问器方法创建一个表示访问属性的 MemberExpression。

PropertyInfo) Property(Expression,
创建一个表示访问属性的 MemberExpression。

Expression[]) PropertyInfo, Property(Expression,
创建一个 IndexExpression,它表示对索引属性的访问。

IEnumerable PropertyInfo, Property(Expression,<Expression>)
创建一个 IndexExpression,它表示对索引属性的访问。

String) Property(Expression,
创建一个表示访问属性的 MemberExpression。

Expression[]) String, Property(Expression,
创建一个 IndexExpression,它表示对索引属性的访问。

String) Type, Property(Expression,
创建一个访问属性的 MemberExpression。

String) PropertyOrField(Expression,
创建一个表示访问属性或字段的 MemberExpression。

Quote(Expression)
创建一个表示具有类型 UnaryExpression 的常量值的表达式的 Expression。

Reduce()
将此节点简化为更简单的表达式。 如果 CanReduce 返回 true,则它应返回有效的表达式。 此方法可以返回本身必须简化的另一个节点。

ReduceAndCheck()
将此节点简化为更简单的表达式。 如果 CanReduce 返回 true,则它应返回有效的表达式。 此方法可以返回本身必须简化的另一个节点。

ReduceExtensions()
将表达式简化为已知节点类型(即非 Extension 节点)或仅在此类型为已知类型时返回表达式。

Expression) ReferenceEqual(Expression,
创建一个表示引用相等比较的 BinaryExpression。

Expression) ReferenceNotEqual(Expression,
创建一个表示引用不相等比较的 BinaryExpression。

Rethrow()
创建一个 UnaryExpression,它表示重新引发异常。

Rethrow(Type)
创建一个 UnaryExpression,它表示重新引发具有给定类型的异常。

Return(LabelTarget)
创建一个表示 return 语句的 GotoExpression。

Expression) Return(LabelTarget,
创建一个表示 return 语句的 GotoExpression。 可以指定在跳转时传递给标签的值。

Type) Expression, Return(LabelTarget,
创建一个表示具有指定类型的 return 语句的 GotoExpression。 可以指定在跳转时传递给标签的值。

Type) Return(LabelTarget,
创建一个表示具有指定类型的 return 语句的 GotoExpression。

Expression) RightShift(Expression,
创建一个表示按位右移运算的 BinaryExpression。

MethodInfo) Expression, RightShift(Expression,
创建一个表示按位右移运算的 BinaryExpression。

Expression) RightShiftAssign(Expression,
创建一个表示按位右移赋值运算的 BinaryExpression。

MethodInfo) Expression, RightShiftAssign(Expression,
创建一个表示按位右移赋值运算的 BinaryExpression。

LambdaExpression) MethodInfo, Expression, RightShiftAssign(Expression,
创建一个表示按位右移赋值运算的 BinaryExpression。

RuntimeVariables(IEnumerable<ParameterExpression>)
创建 RuntimeVariablesExpression 的实例。

RuntimeVariables(ParameterExpression[])
创建 RuntimeVariablesExpression 的实例。

Expression) Subtract(Expression,
创建一个表示不进行溢出检查的算术减法运算的 BinaryExpression。

MethodInfo) Expression, Subtract(Expression,
创建一个表示不进行溢出检查的算术减法运算的 BinaryExpression。

Expression) SubtractAssign(Expression,
创建一个表示不进行溢出检查的减法赋值运算的 BinaryExpression。

MethodInfo) Expression, SubtractAssign(Expression,
创建一个表示不进行溢出检查的减法赋值运算的 BinaryExpression。

LambdaExpression) MethodInfo, Expression, SubtractAssign(Expression,
创建一个表示不进行溢出检查的减法赋值运算的 BinaryExpression。

Expression) SubtractAssignChecked(Expression,
创建一个表示进行溢出检查的减法赋值运算的 BinaryExpression。

MethodInfo) Expression, SubtractAssignChecked(Expression,
创建一个表示进行溢出检查的减法赋值运算的 BinaryExpression。

LambdaExpression) MethodInfo, Expression, SubtractAssignChecked(Expression,
创建一个表示进行溢出检查的减法赋值运算的 BinaryExpression。

Expression) SubtractChecked(Expression,
创建一个表示进行溢出检查的算术减法运算的 BinaryExpression。

MethodInfo) Expression, SubtractChecked(Expression,
创建一个表示进行溢出检查的算术减法运算的 BinaryExpression。

IEnumerable MethodInfo, Expression, Switch(Expression,<SwitchCase>)
创建一个表示具有默认分支的 SwitchExpression 语句的 switch。

SwitchCase[]) MethodInfo, Expression, Switch(Expression,
创建一个表示具有默认分支的 SwitchExpression 语句的 switch。

SwitchCase[]) Expression, Switch(Expression,
创建一个表示具有默认分支的 SwitchExpression 语句的 switch。

SwitchCase[]) Switch(Expression,
创建一个表示不带默认分支的 SwitchExpression 语句的 switch。

IEnumerable MethodInfo, Expression, Expression, Switch(Type,<SwitchCase>)
创建一个表示具有默认分支的 SwitchExpression 语句的 switch。

SwitchCase[]) MethodInfo, Expression, Expression, Switch(Type,
创建一个 SwitchExpression,它表示具有默认分支的 switch 语句。

Expression[]) SwitchCase(Expression,
创建在 SwitchCase 中使用的 SwitchExpression。

IEnumerable SwitchCase(Expression,<Expression>)
创建要在 SwitchCase 对象中使用的 SwitchExpression 对象。

SymbolDocument(String)
创建 SymbolDocumentInfo 的实例。

Guid) SymbolDocument(String,
创建 SymbolDocumentInfo 的实例。

Guid) Guid, SymbolDocument(String,
创建 SymbolDocumentInfo 的实例。

Guid) Guid, Guid, SymbolDocument(String,
创建 SymbolDocumentInfo 的实例。

Throw(Expression)
创建一个 UnaryExpression,它表示引发异常。

Type) Throw(Expression,
创建一个 UnaryExpression,它表示引发具有给定类型的异常。

ToString()
返回 Expression 的的文本化表示形式。(覆盖 Object.ToString()。)

CatchBlock[]) TryCatch(Expression,
创建一个表示 try 块的 TryExpression,该 try 块包含任意数量的 catch 语句,但不包含 fault 和 finally 块。

CatchBlock[]) Expression, TryCatchFinally(Expression,
创建一个表示 try 块的 TryExpression,该 try 块包含任意数量的 catch 语句和一个 finally 块。

Expression) TryFault(Expression,
创建一个表示 try 块的 TryExpression,该 try 块包含一个 fault 块,但不包含 catch 语句。

Expression) TryFinally(Expression,
创建一个表示 try 块的 TryExpression,该 try 块包含一个 finally 块,但不包含 catch 语句。

Type) TryGetActionType(Type[],
创建一个 Type 对象,它表示具有特定类型参数的泛型 System.Action 委托类型。

Type) TryGetFuncType(Type[],
创建一个 Type 对象,它表示具有特定类型参数的泛型 System.Func 委托类型。 最后一个类型参数指定已创建委托的返回类型。

Type) TypeAs(Expression,
创建一个表示显式引用或装箱转换的 UnaryExpression(如果转换失败,则提供 null)。

Type) TypeEqual(Expression,
创建一个比较运行时类型标识的 TypeBinaryExpression。

Type) TypeIs(Expression,
创建一个 TypeBinaryExpression。

UnaryPlus(Expression)
创建一个表示一元正运算的 UnaryExpression。

MethodInfo) UnaryPlus(Expression,
创建一个表示一元正运算的 UnaryExpression。

Type) Unbox(Expression,
创建一个表示显式取消装箱的 UnaryExpression。

Variable(Type)
创建一个 ParameterExpression 节点,该节点可用于标识表达式树中的参数或变量。

String) Variable(Type,
创建一个 ParameterExpression 节点,该节点可用于标识表达式树中的参数或变量。

VisitChildren(ExpressionVisitor)
简化节点,然后对简化的表达式调用访问者委托。 该方法在节点不可简化时引发异常。

 

Spring SpEL表达式语言:从动态配置到规则引擎的核心原理与实战 表达式语言是计算机科学中用于动态计算和逻辑描述的重要工具,它允许将可执行逻辑以字符串形式进行配置和解析。其核心原理在于通过词法分析、语法分析构建抽象语法树,并在运行时结合上下文进行求值,从而实现逻辑与代码的解耦。这一技术价值在于极大提升了系统的灵活性和可配置性,避免了硬编码修改带来的重新部署成本。在应用场景上,表达式语言广泛用于动态配置中心、轻量级规则引擎、模板渲染以及单元测试数据注入等领域。本文聚焦的Spring Expression Language(SpEL)正是这样一个强大的表达式解析引擎,它不仅能 阅读详情

相关推荐

C++ Expression Template 样例解析

本文解析一个Expression Template的样例

leisiyu320的专栏 1453

AST定位表达式

1) BinaryExpression具有二进制运算符的表达式。(2) CallExpression函数调用,常见的格式。3)条件表达式ConditionalExpression。1)BinaryExpression具有二进制运算符。2)CallExpression函数调用。

之度的博客 957

Spring 核心技术解析【纯干货版】- III:Spring 基础模块 Spring-Expression 模块精讲

Spring-Expression 模块,是 Spring 核心容器模块之一,它为 Spring Framework 提供了一种表达式语言:Spring Expression Language(简称 SpEL),这种语言允许开发者在 Spring 应用中灵活地使用动态表达式,简化了复杂的配置与逻辑的实现。不过对开发者而言,日常开发任务中,直接使用 Java 代码或注解就足够了,并且随着 Spring Boot 的普及,减少了直接在配置中使用复杂表达式的需求。

栗筝i的博客 1707

表达式(Expression)

2.运算符作为函数,操作数值作为参数,将作为运算符值的函数应用于作为操作数值的参数。表达式由运算符(Operator)和操作数(Operand)构成。该图称为表达式树,它说明了计算机在计算此嵌套表达式时发生的所有情况。运算符、括号、用逗号分隔一些操作数(也可以没有操作数)。嵌套的调用表达式:操作数也可以是调用表达式。1.先识别运算符,再对操作数子表达式求值。运算符与操作数也是表达式。数字、名称、字符串。

2301_77113152的博客 507

mapbox基础,expressions表达式汇总

expressions表达式是mapbox灵活性的核心来源,可以根据数据源属性、属性值、地图缩放级别等渲染地图数据内容和样式,本文详细介绍mapbox的expressions表达式用法,方便查询使用。希望能帮助到您,感谢支持~

我哎GIS博客 915

告别黑盒调试:用MMSegmentation可视化工具链,从训练到评估一目了然

本文介绍了如何利用MMSegmentation的可视化工具链,从训练到评估实现语义分割模型的透明化调试。通过整合日志分析、混淆矩阵、PR曲线等工具,开发者可以快速定位模型问题,优化性能。文章详细展示了训练曲线分析、性能剖析、混淆矩阵解读和PR曲线应用等关键步骤,帮助用户告别黑盒调试,提升模型开发效率。

weixin_29100927的博客 97

Morris算法遍历二叉树

中序遍历步骤 如果当前节点左子节点(cur.left)为空,输出当前节点(cur),进入右子节点(cur.right)。 如果当前节点左子节点(cur.left)非空,找到当前节点左子树的最右节点(mostRight): 1)如果该节点的右子节点(mostRight.right)为空,则将其指针指向当前节点(cur),进入左子节点(cur.left)。 2)如果该节点的右子节点(mostRight.right)非空,则将其指针置为空,输出当前节点(cur),进入右子节点(cur.right)。

qq_40585050的博客 831

马尔可夫网络和贝叶斯网络的一些总结

马尔可夫网络和贝叶斯网络的一些总结 最近学习了一些关于概率逻辑的知识图谱推理方法,主要就是贝叶斯网络和马尔可夫网络,在此总结一下,内容都来自网络资料,这里加入了一下个人的理解,尽量为大家避雷! 这篇文章是我目前在网络上找到的关于贝叶斯网络最清晰的介绍,大家有兴趣可以去看看 贝叶斯网络中比较重要的两部分就是贝叶斯网络的结构和条件概率表。 贝叶斯网络的结构 下面通过一个例子来介绍: 贝叶斯网的网络结...

qq_43654303的博客 4366

spring-expression表达式

Spring Expression Language(简称 SpEL)

懒猫的脚印 7249

E-Prime脑电实验打mark全攻略:从端口查询到串并口实战(附常见问题解决)

本文提供了E-Prime脑电实验打mark的完整实战指南,涵盖端口查询、并口与串口配置的核心步骤及常见问题解决。文章深入解析了mark原理,并详细介绍了通过E-Basic脚本和Serial设备对象发送信号的两种方法,帮助研究者实现E-Prime与脑电设备的高精度时间同步,确保实验数据可靠性。

4k5l6j7h8的博客 351

用面包板实测MOSFET:手把手教你测量跨导和开关时间

本文详细介绍了如何使用面包板、Arduino和示波器搭建测试平台,实测MOSFET的跨导和开关时间。通过分步测量流程和示波器技巧,帮助电子设计初学者深入理解MOSFET的动态特性,包括跨导计算、开关时间参数解析以及米勒平台现象分析。

beer8的博客 218

Spring Expression Language (SpEL)(详解)

SpEL(Spring Expression Language)是一个强大的表达式语言,可以用于在 Spring 应用中进行动态计算和处理。它能够在 Spring 配置中、注解中、以及任何需要解析动态表达式的地方执行各种操作。SpEL 语法灵活,支持变量解析、方法调用、对象操作等功能,非常适用于动态配置、权限控制和条件判断等场景。SpEL 表达式使用 #{} 来包围,它可以包含常量、变量、方法调用、运算符等。按索引访问集合中的元素。选择集合中符合条件的元素。!按条件过滤集合元素(类似于 [])。

心有—林夕的博客 1812

YOLOV8主干改进方法:C2f-Dual——DualConv轻量化双卷积设计(附改进代码)

DualConv是一种创新的卷积网络结构,旨在构建轻量级的深度神经网络。它通过结合3×3和1×1的卷积核处理相同的输入特征映射通道,优化了信息处理和特征提取。DualConv利用组卷积技术高效排列卷积滤波器,大大降低了计算成本和参数数量。

m0_74890428的博客 4691

c#:表达式树概念及应用场景(Expression)

环境: window 10 vs2019 16.5.1 .netcore 3.1 .Net Reflector 10 ILSpy版本6.0.0.5559-preview2 参考: C#高级编程六十六天----表达式树总结 C# 表达式树讲解(一) 微软文档(Expression 类) 目的: 探索什么是表达式树? 表达式能用来做什么? 表达式树在Linq To Sql中起到了什么作用? 一...

火焰 1万+

药物不良反应预测实战指南:从FAERS数据挖掘到PyTorch深度学习模型(含可解释性分析)

【代码】药物不良反应预测实战指南:从FAERS数据挖掘到PyTorch深度学习模型(含可解释性分析)

理论都是虚的,代码才是王道。 719

《Python星球日记》 第73天:情感分析与主题建模

《Python星球日记》 第73天:情感分析与主题建模,今天我们将探索两个自然语言处理领域的重要技术:情感分析和主题建模。这两项技术在社交媒体分析、用户反馈处理、市场研究等多个领域有着广泛应用。

Code_流苏:在代码中寻诗意,在实践中觅真知 911

Oceanbase大赛:数据库expression 表达式体系重构全流程详解(MiniOB)

本文详细介绍了OceanBase数据库大赛中MiniOB项目的表达式体系重构过程。原有系统存在硬编码条件结构、缺失一元表达式支持、缺乏可扩展性等问题。重构目标是建立统一、灵活、可扩展的表达式框架,支持嵌套表达式、一元运算符和优化功能。 重构关键点包括: 语法解析阶段扩展了一元表达式支持,使用%prec UMINUS处理负号优先级; 升级条件表达式数据结构,支持任意表达式作为操作数; 扩展表达式类型,包括字段引用、常量值、比较、逻辑连接和算术表达式; 实现表达式绑定机制,支持类型自动提升和转换。 重构后的系统

qq_41879372的博客 1986

SOEM主站开发篇(1):移植SOEM主站到Linux开发板

详细介绍了SOEM主站源码移植到Linux开发板上的步骤,同时演示了如何使用Linux开发板获取EtherCAT从站的PDO映射信息。

kevin1499的博客 2386

【亲测免费】 探索Python数学表达式评估器:py-expression-eval

探索Python数学表达式评估器:py-expression-eval 在这个快速发展的数字化时代,处理和评估数学表达式的能力已成为开发者必备的技能之一。幸运的是,我们有像py-expression-eval这样的强大工具,它是一个完全开源的Python库,能够解析并评估复杂的数学表达式。本文将带你深入了解这个项目的魅力,并展示其在实际应用中的潜力。 1、项目介绍 py-expression-ev...

gitblog_00047的博客 452

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

C++表达式求值(Stack and Expression)

表达式求值有几个核心的技术:百度网盘全部源码QQ3508551694 1 中缀infix表达式转后缀postfix表达式(文本解析) 解析中缀表达式到后缀表达式的核心思想就是对表达式逐步向前解析; 如果遇到一个空格就连续“吃掉”紧接着的空格; 如果遇到一个操作数就“继续吃掉紧接着的整数中的低位数字,完整一个完整整数的读取; 如果遇到了不应该出现的字符就抛出异常。 1.1 运算符操...

C++ 爱好者 make_it_simple888 5768

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

JS表达式(Expression)和JS语句(Statement)区别(表达式必须有返回值,语句通常不返回值)表达式语句、逗号运算符、IIFE立即执行函数表达式、表达式和语句和表达式

/ x = 15。

Dontla的博客 1073

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

使用 Mathematical_Expression 从零开始实现数学题目的作答小游戏【可复制代码】

本文介绍如何使用Java和mathematical-expression库构建一个动态数学答题小游戏。通过随机生成数学表达式、修改操作数参数,实现无限题库功能。核心步骤包括:引入库依赖、编译不同运算符的表达式模板、随机选择表达式结构、动态修改操作数值。这种方案突破了传统静态题库的限制,可灵活控制题目难度,并自动验证答案正确性。代码示例展示了如何实现表达式随机生成和数值替换,为开发趣味数学学习工具提供了技术参考。

Liming07的博客 943

C# Expression实战:动态构建查询与业务规则引擎

本文深入探讨了C# Expression表达式树在动态构建查询与业务规则引擎中的实战应用。通过拆解核心组件与实战演练,展示了如何利用Expression在运行时灵活组合查询条件,并构建可配置的轻量级规则引擎,从而大幅提升代码的灵活性与可维护性。

html8的博客 802
上一篇: SVG文字沿指定路径运动
下一篇: winform随笔
昵称全重复
博客等级 码龄11年 37粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值