Dela via


Så här kör du uttrycksträd (Visual Basic)

Det här avsnittet visar hur du kör ett uttrycksträd. Att köra ett uttrycksträd kan returnera ett värde, eller så kan det bara utföra en åtgärd som att anropa en metod.

Endast uttrycksträd som representerar lambda-uttryck kan köras. Uttrycksträd som representerar lambda-uttryck är av typen LambdaExpression eller Expression<TDelegate>. Om du vill köra dessa uttrycksträd anropar du Compile metoden för att skapa ett körbart ombud och anropar sedan ombudet.

Kommentar

Om typen av ombud inte är känd, det vill säga lambda-uttrycket är av typen LambdaExpression och inte Expression<TDelegate>, måste du anropa DynamicInvoke metoden på ombudet i stället för att anropa den direkt.

Om ett uttrycksträd inte representerar ett lambda-uttryck kan du skapa ett nytt lambda-uttryck som har det ursprungliga uttrycksträdet som brödtext genom att anropa Lambda<TDelegate>(Expression, IEnumerable<ParameterExpression>) metoden. Sedan kan du köra lambda-uttrycket enligt beskrivningen tidigare i det här avsnittet.

Exempel

Följande kodexempel visar hur du kör ett uttrycksträd som representerar att höja ett tal till en makt genom att skapa ett lambda-uttryck och köra det. Resultatet, som representerar det tal som upphöjts till strömmen, visas.

' 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  

Kompilera koden

  • Inkludera namnområdet System.Linq.Expressions.

Se även