如何:執行運算式樹狀結構 (Visual Basic)
本主題示範如何執行運算式樹狀架構。 執行運算式樹狀架構可能會傳回一個值,或者只是執行某個動作,例如呼叫方法。
您只能執行代表 Lambda 運算式的運算式樹狀架構。 代表 Lambda 運算式的運算式樹狀架構為 LambdaExpression 或 Expression<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 命名空間。