Udostępnij za pośrednictwem


Porady: wykonywanie drzew wyrażeń (Visual Basic)

W tym temacie pokazano, jak wykonać drzewo wyrażeń. Wykonanie drzewa wyrażeń może zwrócić wartość lub po prostu wykonać akcję, taką jak wywołanie metody.

Można wykonywać tylko drzewa wyrażeń wyrażenia lambda. Drzewa wyrażeń reprezentujące wyrażenia lambda są typu LambdaExpression lub Expression<TDelegate>. Aby wykonać te drzewa wyrażeń, wywołaj Compile metodę w celu utworzenia delegata wykonywalnego, a następnie wywołaj delegata.

Uwaga

Jeśli typ delegata nie jest znany, oznacza to, że wyrażenie lambda jest typu LambdaExpression , a nie Expression<TDelegate>, należy wywołać metodę DynamicInvoke na delegatu zamiast wywołać go bezpośrednio.

Jeśli drzewo wyrażeń nie reprezentuje wyrażenia lambda, możesz utworzyć nowe wyrażenie lambda, które ma oryginalne drzewo wyrażeń jako jego treść, wywołując metodę Lambda<TDelegate>(Expression, IEnumerable<ParameterExpression>) . Następnie możesz wykonać wyrażenie lambda zgodnie z opisem we wcześniejszej części tej sekcji.

Przykład

W poniższym przykładzie kodu pokazano, jak wykonać drzewo wyrażeń reprezentujące podniesienie liczby do potęgi przez utworzenie wyrażenia lambda i wykonanie go. Zostanie wyświetlony wynik reprezentujący liczbę podniesioną do potęgi.

' 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  

Kompilowanie kodu

  • Uwzględnij przestrzeń nazw System.Linq.Expressions.

Zobacz też