共用方式為


如何:執行運算式樹(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 命名空間。

另請參閱