Expression<TDelegate> Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Representerar ett starkt skrivet lambda-uttryck som en datastruktur i form av ett uttrycksträd. Det går inte att ärva den här klassen.
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
Typparametrar
- TDelegate
Typen av ombud som Expression<TDelegate> representerar.
- Arv
Exempel
I följande kodexempel visas hur du representerar ett lambda-uttryck både som körbar kod i form av ett ombud och som data i form av ett uttrycksträd. Det visar också hur du omvandlar uttrycksträdet tillbaka till körbar kod med hjälp Compile av metoden.
// 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
Kommentarer
När ett lambda-uttryck tilldelas till en variabel, ett fält eller en parameter vars typ är Expression<TDelegate>genererar kompilatorn instruktioner för att skapa ett uttrycksträd.
Anmärkning
Det finns en konvertering från ett lambda-uttryck för att skriva Expression<D> (Expression(Of D) i Visual Basic) om det finns en konvertering från lambda-uttrycket till ett ombud av typen D. Konverteringen kan dock misslyckas, till exempel om lambda-uttryckets brödtext är ett block. Det innebär att ombud och uttrycksträd beter sig på samma sätt när det gäller överlagringsmatchning.
Uttrycksträdet är en minnesintern datarepresentation av lambda-uttrycket. Uttrycksträdet gör lambda-uttryckets struktur transparent och explicit. Du kan interagera med data i uttrycksträdet precis som med andra datastrukturer.
Möjligheten att behandla uttryck som datastrukturer gör att API:er kan ta emot användarkod i ett format som kan inspekteras, transformeras och bearbetas på ett anpassat sätt. Till exempel använder LINQ till SQL-dataåtkomstimplementeringen den här funktionen för att översätta uttrycksträd till Transact-SQL-instruktioner som kan utvärderas av databasen.
Många vanliga frågeoperatorer som definierats i Queryable klassen har en eller flera parametrar av typen Expression<TDelegate>.
En NodeType är Expression<TDelegate>Lambda.
Lambda<TDelegate>(Expression, IEnumerable<ParameterExpression>) Använd metoden eller Lambda<TDelegate>(Expression, ParameterExpression[]) för att skapa ett Expression<TDelegate> objekt.
Egenskaper
| Name | Description |
|---|---|
| Body |
Hämtar lambda-uttryckets kropp. (Ärvd från LambdaExpression) |
| CanReduce |
Anger att noden kan reduceras till en enklare nod. Om detta returnerar true kan Reduce() anropas för att skapa det reducerade formuläret. (Ärvd från Expression) |
| Name |
Hämtar namnet på lambda-uttrycket. (Ärvd från LambdaExpression) |
| NodeType |
Returnerar nodtypen för den här Expression. (Ärvd från LambdaExpression) |
| Parameters |
Hämtar parametrarna för lambda-uttrycket. (Ärvd från LambdaExpression) |
| ReturnType |
Hämtar returtypen för lambda-uttrycket. (Ärvd från LambdaExpression) |
| TailCall |
Hämtar det värde som anger om lambda-uttrycket ska kompileras med optimering av tail-anrop. (Ärvd från LambdaExpression) |
| Type |
Hämtar den statiska typen av uttryck som detta Expression representerar. (Ärvd från LambdaExpression) |
Metoder
| Name | Description |
|---|---|
| Accept(ExpressionVisitor) |
Skickar till den specifika besöksmetoden för den här nodtypen. Anropar MethodCallExpressionVisitMethodCall(MethodCallExpression)till exempel . (Ärvd från Expression) |
| Compile() |
Kompilerar lambda-uttrycket som beskrivs av uttrycksträdet till körbar kod och skapar ett ombud som representerar lambda-uttrycket. |
| Compile(Boolean) |
Kompilerar lambda-uttrycket som beskrivs av uttrycksträdet till tolkad eller kompilerad kod och skapar ett ombud som representerar lambda-uttrycket. |
| Compile(DebugInfoGenerator) |
Skapar ett ombud som representerar lambda-uttrycket. |
| CompileToMethod(MethodBuilder, DebugInfoGenerator) |
Kompilerar lambda till en metoddefinition och anpassad felsökningsinformation. (Ärvd från LambdaExpression) |
| CompileToMethod(MethodBuilder) |
Kompilerar lambda till en metoddefinition. (Ärvd från LambdaExpression) |
| Equals(Object) |
Avgör om det angivna objektet är lika med det aktuella objektet. (Ärvd från Object) |
| GetHashCode() |
Fungerar som standard-hash-funktion. (Ärvd från Object) |
| GetType() |
Hämtar den aktuella instansen Type . (Ärvd från Object) |
| MemberwiseClone() |
Skapar en ytlig kopia av den aktuella Object. (Ärvd från Object) |
| Reduce() |
Reducerar den här noden till ett enklare uttryck. Om CanReduce returnerar true bör detta returnera ett giltigt uttryck. Den här metoden kan returnera en annan nod som måste minskas. (Ärvd från Expression) |
| ReduceAndCheck() |
Reducerar den här noden till ett enklare uttryck. Om CanReduce returnerar true bör detta returnera ett giltigt uttryck. Den här metoden kan returnera en annan nod som måste minskas. (Ärvd från Expression) |
| ReduceExtensions() |
Minskar uttrycket till en känd nodtyp (som inte är en tilläggsnod) eller returnerar bara uttrycket om det redan är en känd typ. (Ärvd från Expression) |
| ToString() |
Returnerar en textrepresentation av Expression. (Ärvd från Expression) |
| Update(Expression, IEnumerable<ParameterExpression>) |
Skapar ett nytt uttryck som liknar det här, men som använder de angivna underordnade uttrycken. Om alla underordnade är likadana returneras det här uttrycket. |
| VisitChildren(ExpressionVisitor) |
Minskar noden och anropar sedan besökarens ombud för det reducerade uttrycket. Metoden genererar ett undantag om noden inte är redukterbar. (Ärvd från Expression) |