Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V tomto tématu zjistíte, jak provést strom výrazů. Spuštění stromu výrazů může vrátit hodnotu, nebo může provést pouze akci, jako je volání metody.
Spustit lze pouze ty stromy výrazů, které představují lambda výrazy. Stromy výrazů, které představují výrazy lambda, jsou typu LambdaExpression nebo Expression<TDelegate>. Chcete-li tyto stromy výrazů spustit, zavolejte metodu Compile pro vytvoření spustitelného delegáta a pak vyvolejte delegáta.
Poznámka:
Pokud typ delegáta není známý, to znamená, že výraz lambda je typu LambdaExpression , a ne Expression<TDelegate>, musíte volat metodu DynamicInvoke na delegátu místo jeho přímého vyvolání.
Pokud strom výrazu nepředstavuje výraz lambda, můžete vytvořit nový výraz lambda, který má původní strom výrazu jako jeho tělo, voláním Lambda<TDelegate>(Expression, IEnumerable<ParameterExpression>) metody. Potom můžete výraz lambda spustit, jak je popsáno výše v této části.
Příklad
Následující příklad kódu ukazuje, jak spustit strom výrazu, který představuje zvýšení čísla na mocninu vytvořením výrazu lambda a jeho spuštěním. Zobrazí se výsledek, který představuje číslo umocněné na mocninu.
' 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
Kompilace kódu
- Zahrňte obor názvů System.Linq.Expressions.