Expression<TDelegate> Klas

Definitie

Vertegenwoordigt een sterk getypte lambda-expressie als een gegevensstructuur in de vorm van een expressiestructuur. Deze klasse kan niet worden overgenomen.

generic <typename TDelegate>
public ref class Expression sealed : System::Linq::Expressions::LambdaExpression
public sealed class Expression<TDelegate> : System.Linq.Expressions.LambdaExpression
type Expression<'Delegate> = class
    inherit LambdaExpression
Public NotInheritable Class Expression(Of TDelegate)
Inherits LambdaExpression

Type parameters

TDelegate

Het type gemachtigde dat de Expression<TDelegate> vertegenwoordiger vertegenwoordigt.

Overname
Expression<TDelegate>

Voorbeelden

In het volgende codevoorbeeld ziet u hoe u een lambda-expressie vertegenwoordigt als uitvoerbare code in de vorm van een gemachtigde en als gegevens in de vorm van een expressiestructuur. Ook wordt gedemonstreerd hoe u de expressiestructuur weer kunt omzetten in uitvoerbare code met behulp van de Compile methode.


// Lambda expression as executable code.
Func<int, bool> deleg = i => i < 5;
// Invoke the delegate and display the output.
Console.WriteLine("deleg(4) = {0}", deleg(4));

// Lambda expression as data in the form of an expression tree.
System.Linq.Expressions.Expression<Func<int, bool>> expr = i => i < 5;
// Compile the expression tree into executable code.
Func<int, bool> deleg2 = expr.Compile();
// Invoke the method and print the output.
Console.WriteLine("deleg2(4) = {0}", deleg2(4));

/*  This code produces the following output:

    deleg(4) = True
    deleg2(4) = True
*/

' Lambda expression as executable code.
Dim deleg As Func(Of Integer, Boolean) = Function(ByVal i) i < 5
' Invoke the delegate and display the output.
MsgBox(String.Format("deleg(4) = {0}", deleg(4)))

' Lambda expression as data in the form of an expression tree.
Dim expr As System.Linq.Expressions.Expression(Of Func(Of Integer, Boolean)) = Function(ByVal i) i < 5
' Compile the expression tree into executable code.
Dim deleg2 As Func(Of Integer, Boolean) = expr.Compile()
' Invoke the method and print the output.
MsgBox(String.Format("deleg2(4) = {0}", deleg2(4)))

' This code produces the following output:
'
' deleg(4) = True
' deleg2(4) = True

Opmerkingen

Wanneer een lambda-expressie wordt toegewezen aan een variabele, veld of parameter waarvan het type is Expression<TDelegate>, verzendt de compiler instructies voor het bouwen van een expressiestructuur.

Note

Een conversie van een lambda-expressie om Expression<D> (Expression(Of D) in Visual Basic) te typen, bestaat als er een conversie van de lambda-expressie naar een gemachtigde van het type D bestaat. De conversie kan echter mislukken, bijvoorbeeld als de hoofdtekst van de lambda-expressie een blok is. Dit betekent dat gedelegeerden en expressiestructuren zich op dezelfde manier gedragen met betrekking tot overbelastingsresolutie.

De expressiestructuur is een in-memory gegevensweergave van de lambda-expressie. De expressiestructuur maakt de structuur van de lambda-expressie transparant en expliciet. U kunt de gegevens in de expressiestructuur net zo gebruiken als bij elke andere gegevensstructuur.

De mogelijkheid om expressies als gegevensstructuren te behandelen, stelt API's in staat om gebruikerscode te ontvangen in een indeling die op een aangepaste manier kan worden geïnspecteerd, getransformeerd en verwerkt. De IMPLEMENTATIE van LINQ naar SQL-gegevenstoegang maakt bijvoorbeeld gebruik van deze faciliteit om expressiestructuren te vertalen naar Transact-SQL instructies die door de database kunnen worden geëvalueerd.

Veel standaardqueryoperators die in de Queryable klasse zijn gedefinieerd, hebben een of meer parameters van het type Expression<TDelegate>.

De NodeType van een Expression<TDelegate> is Lambda.

Gebruik de Lambda<TDelegate>(Expression, IEnumerable<ParameterExpression>) of Lambda<TDelegate>(Expression, ParameterExpression[]) methode om een Expression<TDelegate> object te maken.

Eigenschappen

Name Description
Body

Haalt de hoofdtekst van de lambda-expressie op.

(Overgenomen van LambdaExpression)
CanReduce

Geeft aan dat het knooppunt kan worden gereduceerd tot een eenvoudiger knooppunt. Als dit waar retourneert, kan Reduce() worden aangeroepen om de gereduceerde vorm te produceren.

(Overgenomen van Expression)
Name

Hiermee haalt u de naam van de lambda-expressie op.

(Overgenomen van LambdaExpression)
NodeType

Retourneert het knooppunttype van dit Expression.

(Overgenomen van LambdaExpression)
Parameters

Hiermee haalt u de parameters van de lambda-expressie op.

(Overgenomen van LambdaExpression)
ReturnType

Hiermee haalt u het retourtype van de lambda-expressie op.

(Overgenomen van LambdaExpression)
TailCall

Hiermee wordt de waarde opgehaald die aangeeft of de lambda-expressie wordt gecompileerd met de optimalisatie van tail-aanroepen.

(Overgenomen van LambdaExpression)
Type

Hiermee haalt u het statische type van de expressie op die deze Expression vertegenwoordigt.

(Overgenomen van LambdaExpression)

Methoden

Name Description
Accept(ExpressionVisitor)

Verzendt naar de specifieke bezoekmethode voor dit knooppunttype. Roept bijvoorbeeld MethodCallExpression de VisitMethodCall(MethodCallExpression).

(Overgenomen van Expression)
Compile()

Compileert de lambda-expressie die wordt beschreven door de expressiestructuur in uitvoerbare code en produceert een gemachtigde die de lambda-expressie vertegenwoordigt.

Compile(Boolean)

Compileert de lambda-expressie die wordt beschreven door de expressiestructuur in geïnterpreteerde of gecompileerde code en produceert een gemachtigde die de lambda-expressie vertegenwoordigt.

Compile(DebugInfoGenerator)

Produceert een gemachtigde die de lambda-expressie vertegenwoordigt.

CompileToMethod(MethodBuilder, DebugInfoGenerator)

Compileert de lambda in een methodedefinitie en aangepaste foutopsporingsgegevens.

(Overgenomen van LambdaExpression)
CompileToMethod(MethodBuilder)

Compileert de lambda in een methodedefinitie.

(Overgenomen van LambdaExpression)
Equals(Object)

Bepaalt of het opgegeven object gelijk is aan het huidige object.

(Overgenomen van Object)
GetHashCode()

Fungeert als de standaardhashfunctie.

(Overgenomen van Object)
GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
Reduce()

Vermindert dit knooppunt tot een eenvoudigere expressie. Als CanReduce waar retourneert, moet dit een geldige expressie retourneren. Deze methode kan een ander knooppunt retourneren dat zelf moet worden verminderd.

(Overgenomen van Expression)
ReduceAndCheck()

Vermindert dit knooppunt tot een eenvoudigere expressie. Als CanReduce waar retourneert, moet dit een geldige expressie retourneren. Deze methode kan een ander knooppunt retourneren dat zelf moet worden verminderd.

(Overgenomen van Expression)
ReduceExtensions()

Vermindert de expressie tot een bekend knooppunttype (dat geen extensieknooppunt is) of retourneert alleen de expressie als het al een bekend type is.

(Overgenomen van Expression)
ToString()

Retourneert een tekstuele weergave van de Expression.

(Overgenomen van Expression)
Update(Expression, IEnumerable<ParameterExpression>)

Hiermee maakt u een nieuwe expressie die er als volgt uitziet, maar met behulp van de opgegeven onderliggende elementen. Als alle onderliggende items hetzelfde zijn, wordt deze expressie geretourneerd.

VisitChildren(ExpressionVisitor)

Vermindert het knooppunt en roept vervolgens de gedelegeerde van de bezoeker aan op de gereduceerde expressie. De methode genereert een uitzondering als het knooppunt niet kan worden herleid.

(Overgenomen van Expression)

Van toepassing op

Zie ook