Megosztás a következőn keresztül:


Útmutató: Kifejezésfák végrehajtása (Visual Basic)

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.

Lásd még