执行表达式树的方法(Visual Basic)

本主题演示如何执行表达式树。 执行表达式树可能会返回值,也可以只执行调用方法等作。

仅可以执行表示 lambda 表达式的表达式树。 表示 lambda 表达式的表达式树的类型 LambdaExpressionExpression<TDelegate>。 若要执行这些表达式树,请调用 Compile 方法以创建可执行委托,然后调用委托。

注释

如果委托的类型未知,即 lambda 表达式属于LambdaExpression类型而不是Expression<TDelegate>类型,则必须调用委托上的DynamicInvoke方法,而不是直接调用委托。

如果表达式树不表示 lambda 表达式,则可以通过调用 Lambda<TDelegate>(Expression, IEnumerable<ParameterExpression>) 该方法创建一个新的 lambda 表达式,该表达式树具有原始表达式树作为其主体。 然后,可以按照本节前面所述执行 lambda 表达式。

示例:

下面的代码示例演示如何执行表达式树,该树表示通过创建 lambda 表达式并执行该表达式将数字提升到幂。 示例最后显示幂运算的结果。

' The expression tree to execute.  
Dim be As BinaryExpression = Expression.Power(Expression.Constant(2.0R), Expression.Constant(3.0R))  
  
' Create a lambda expression.  
Dim le As Expression(Of Func(Of Double)) = Expression.Lambda(Of Func(Of Double))(be)  
  
' Compile the lambda expression.  
Dim compiledExpression As Func(Of Double) = le.Compile()  
  
' Execute the lambda expression.  
Dim result As Double = compiledExpression()  
  
' Display the result.  
MsgBox(result)  
  
' This code produces the following output:  
' 8  

编译代码

  • 包括 System.Linq.Expressions 命名空间。

另请参阅