共用方式為


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

另請參閱