Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
In questo argomento viene illustrato come eseguire un albero delle espressioni. L'esecuzione di un albero delle espressioni può restituire un valore oppure può semplicemente eseguire un'azione, ad esempio la chiamata di un metodo.
È possibile eseguire solo alberi di espressioni che rappresentano espressioni lambda. Gli alberi delle espressioni che rappresentano espressioni lambda sono di tipo LambdaExpression o Expression<TDelegate>. Per eseguire questi alberi delle espressioni, chiamare il metodo Compile per creare un delegato eseguibile e quindi invocare il delegato.
Annotazioni
Se il tipo del delegato non è noto, ovvero l'espressione lambda è di tipo LambdaExpression e non Expression<TDelegate>, è necessario chiamare il DynamicInvoke metodo sul delegato anziché richiamarlo direttamente.
Se un albero delle espressioni non rappresenta un'espressione lambda, è possibile creare una nuova espressione lambda con l'albero delle espressioni originale come corpo, chiamando il Lambda<TDelegate>(Expression, IEnumerable<ParameterExpression>) metodo . È quindi possibile eseguire l'espressione lambda come descritto in precedenza in questa sezione.
Esempio
Nell'esempio di codice seguente viene illustrato come eseguire un albero delle espressioni che rappresenta la generazione di un numero a una potenza creando un'espressione lambda ed eseguendola. Viene visualizzato il risultato, che rappresenta il numero elevato a una potenza.
' 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
Compilare il codice
- Includere lo spazio dei nomi System.Linq.Expressions.