Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a témakör bemutatja, hogyan hajthat végre kifejezésfát. A kifejezésfa végrehajtása visszaadhat egy értéket, vagy egyszerűen végrehajthat egy műveletet, például egy metódus meghívását.
Csak a lambda kifejezéseket ábrázoló kifejezésfák hajthatók végre. A lambda kifejezéseket ábrázoló kifejezésfák típusa LambdaExpression vagy Expression<TDelegate>típusa. A kifejezésfák végrehajtásához hívja meg a Compile metódust egy végrehajtható delegált létrehozásához, majd hívja meg a delegáltat.
Megjegyzés:
Ha a delegált típusa nem ismert, vagyis a lambda kifejezés típusa LambdaExpression nem Expression<TDelegate>, akkor a DynamicInvoke metódust a delegálton kell meghívnia ahelyett, hogy közvetlenül meghívja.
Ha egy kifejezésfa nem lambda kifejezést jelöl, a metódus meghívásával Lambda<TDelegate>(Expression, IEnumerable<ParameterExpression>) létrehozhat egy új lambda kifejezést, amelynek törzse az eredeti kifejezésfa. Ezután végrehajthatja a lambda kifejezést az ebben a szakaszban korábban ismertetett módon.
példa
Az alábbi példakód bemutatja, hogyan hajthat végre egy olyan kifejezésfát, amely egy számot egy hatványra emel egy lambda-kifejezés létrehozásával és végrehajtásával. Megjelenik az eredmény, amely a hatványra emelt számot jelöli.
' 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
A kód összeállítása
- Adja meg a System.Linq.Expressions névteret.