Delen via


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.

Zie ook