Procedure: Expressiestructuren uitvoeren (Visual Basic)
In dit onderwerp wordt beschreven hoe u een expressiestructuur uitvoert. Als u een expressiestructuur uitvoert, kan een waarde worden geretourneerd of kan er gewoon een actie worden uitgevoerd, zoals het aanroepen van een methode.
Alleen expressiestructuren die lambda-expressies vertegenwoordigen, kunnen worden uitgevoerd. Expressiestructuren die lambda-expressies vertegenwoordigen, zijn van het type LambdaExpression of Expression<TDelegate>. Als u deze expressiestructuren wilt uitvoeren, roept u de Compile methode aan om een uitvoerbare gemachtigde te maken en roept u de gemachtigde aan.
Notitie
Als het type van de gemachtigde niet bekend is, is de lambda-expressie van het type LambdaExpression en niet Expression<TDelegate>, moet u de DynamicInvoke methode voor de gemachtigde aanroepen in plaats van deze rechtstreeks aan te roepen.
Als een expressiestructuur geen lambda-expressie vertegenwoordigt, kunt u een nieuwe lambda-expressie maken met de oorspronkelijke expressiestructuur als hoofdtekst door de methode aan te Lambda<TDelegate>(Expression, IEnumerable<ParameterExpression>) roepen. Vervolgens kunt u de lambda-expressie uitvoeren zoals eerder in deze sectie is beschreven.
Opmerking
In het volgende codevoorbeeld ziet u hoe u een expressiestructuur uitvoert die een getal naar een macht verheffen door een lambda-expressie te maken en uit te voeren. Het resultaat, dat het getal weergeeft dat tot de macht is verheven, wordt weergegeven.
' 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
De code compileren
- Neem de naamruimte System.Linq.Expressions op.