Expression<TDelegate> Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Stellt einen stark typisierten lambda-Ausdruck als Datenstruktur in Form einer Ausdrucksbaumstruktur dar. Diese Klasse kann nicht vererbt werden.
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
Typparameter
- TDelegate
Der Typ des Delegaten, der die Expression<TDelegate> darstellt.
- Vererbung
Beispiele
Im folgenden Codebeispiel wird veranschaulicht, wie ein Lambdaausdruck sowohl als ausführbarer Code in Form eines Delegaten als auch als Daten in Form einer Ausdrucksstruktur dargestellt wird. Außerdem wird veranschaulicht, wie die Ausdrucksstruktur mithilfe der Compile -Methode wieder in ausführbaren Code umgewandelt wird.
// 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
Hinweise
Wenn ein Lambdaausdruck einer Variablen, einem Feld oder einem Parameter zugewiesen wird, deren Typ ist Expression<TDelegate>, gibt der Compiler Anweisungen zum Erstellen einer Ausdrucksstruktur aus.
Hinweis
Eine Konvertierung von einem Lambdaausdruck in den Typ Expression<D>
(Expression(Of D)
in Visual Basic) ist vorhanden, wenn eine Konvertierung vom Lambdaausdruck in einen Delegaten vom Typ D
vorhanden ist. Die Konvertierung kann jedoch fehlschlagen, z. B. wenn der Text des Lambdaausdrucks ein Block ist. Dies bedeutet, dass sich Delegaten und Ausdrucksbaumstrukturen in Bezug auf die Überladungsauflösung ähnlich verhalten.
Die Ausdrucksstruktur ist eine In-Memory-Datendarstellung des Lambdaausdrucks. Die Ausdrucksstruktur macht die Struktur des Lambdaausdrucks transparent und explizit. Sie können mit den Daten in der Ausdrucksstruktur genauso wie mit jeder anderen Datenstruktur interagieren.
Durch die Möglichkeit, Ausdrücke als Datenstrukturen zu behandeln, können APIs Benutzercode in einem Format empfangen, das auf benutzerdefinierte Weise überprüft, transformiert und verarbeitet werden kann. Beispielsweise verwendet die LINQ to SQL Datenzugriffsimplementierung diese Funktion, um Ausdrucksbaumstrukturen in Transact-SQL-Anweisungen zu übersetzen, die von der Datenbank ausgewertet werden können.
Viele in der Queryable -Klasse definierte Standardabfrageoperatoren verfügen über einen oder mehrere Parameter vom Typ Expression<TDelegate>.
Der NodeType von ist Expression<TDelegate>Lambda.
Verwenden Sie die Lambda<TDelegate>(Expression, IEnumerable<ParameterExpression>) - oder Lambda<TDelegate>(Expression, ParameterExpression[]) -Methode, um ein Expression<TDelegate> -Objekt zu erstellen.
Eigenschaften
Body |
Ruft den Text des Lambdaausdrucks ab. (Geerbt von LambdaExpression) |
CanReduce |
Gibt an, dass der Knoten zu einem einfacheren Knoten reduziert werden kann. Wenn true zurückgegeben wird, kann Reduce() aufgerufen werden, um das reduzierte Formular zu erzeugen. (Geerbt von Expression) |
Name |
Ruft den Namen des Lambdaausdrucks ab. (Geerbt von LambdaExpression) |
NodeType |
Gibt den Knotentyp dieses Expression zurück. (Geerbt von LambdaExpression) |
Parameters |
Ruft die Parameter des Lambdaausdrucks ab. (Geerbt von LambdaExpression) |
ReturnType |
Ruft den Rückgabetyp des Lambdaausdrucks ab. (Geerbt von LambdaExpression) |
TailCall |
Ruft den Wert ab, der angibt, ob der Lambdaausdruck mit der Endeaufrufoptimierung kompiliert wird. (Geerbt von LambdaExpression) |
Type |
Ruft den statischen Typ des Ausdrucks ab, den dieser Expression darstellt. (Geerbt von LambdaExpression) |
Methoden
Accept(ExpressionVisitor) |
Sendet an die spezifische Visit-Methode für diesen Knotentyp. Beispielsweise ruft MethodCallExpression die Methode VisitMethodCall(MethodCallExpression) auf. (Geerbt von Expression) |
Compile() |
Kompiliert den von der Ausdrucksbaumstruktur beschriebenen Lambda-Ausdruck in ausführbaren Code und erzeugt einen Delegaten, der den Lambda-Ausdruck darstellt. |
Compile(Boolean) |
Kompiliert die Lambdaausdrücke, die von der Ausdrucksbaumstruktur als interpretierter oder kompilierter Code beschrieben werden, und erzeugt einen Delegaten, der den Lambdaausdruck darstellt. |
Compile(Boolean) |
Erzeugt einen interpretierten oder kompilierten Delegat, der den Lambdaausdruck darstellt. (Geerbt von LambdaExpression) |
Compile(DebugInfoGenerator) |
Erzeugt einen Delegaten, der den Lambdaausdruck darstellt. |
Compile(DebugInfoGenerator) |
Erzeugt einen Delegaten, der den Lambdaausdruck darstellt. (Geerbt von LambdaExpression) |
CompileToMethod(MethodBuilder) |
Kompiliert den Lambdaausdruck in eine Methodendefinition. (Geerbt von LambdaExpression) |
CompileToMethod(MethodBuilder, DebugInfoGenerator) |
Kompiliert den Lambdaausdruck in eine Methodendefinition und benutzerdefinierte Debuginformationen. (Geerbt von LambdaExpression) |
Equals(Object) |
Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist. (Geerbt von Object) |
GetHashCode() |
Fungiert als Standardhashfunktion. (Geerbt von Object) |
GetType() |
Ruft den Type der aktuellen Instanz ab. (Geerbt von Object) |
MemberwiseClone() |
Erstellt eine flache Kopie des aktuellen Object. (Geerbt von Object) |
Reduce() |
Reduziert diesen Knoten zu einem einfacheren Ausdruck. Wenn CanReduce true zurückgibt, sollte ein gültiger Ausdruck zurückgegeben werden. Diese Methode kann einen anderen Knoten zurückgeben, der selbst reduziert werden muss. (Geerbt von Expression) |
ReduceAndCheck() |
Reduziert diesen Knoten zu einem einfacheren Ausdruck. Wenn CanReduce true zurückgibt, sollte ein gültiger Ausdruck zurückgegeben werden. Diese Methode kann einen anderen Knoten zurückgeben, der selbst reduziert werden muss. (Geerbt von Expression) |
ReduceExtensions() |
Reduziert den Ausdruck zu einem bekannten Knotentyp (kein Erweiterungsknoten) oder gibt nur den Ausdruck zurück, wenn es sich um einen bereits bekannten Typ handelt. (Geerbt von Expression) |
ToString() |
Gibt eine Textdarstellung des Expression zurück. (Geerbt von Expression) |
Update(Expression, IEnumerable<ParameterExpression>) |
Erstellt einen neuen Ausdruck, der diesem ähnelt, verwendet jedoch die angegebenen untergeordneten Elemente. Wenn alle untergeordneten Elemente identisch sind, wird dieser Ausdruck zurückgegeben. |
VisitChildren(ExpressionVisitor) |
Reduziert den Knoten und ruft dann den Visitor-Delegaten für den reduzierten Ausdruck auf. Die Methode löst eine Ausnahme aus, wenn der Knoten nicht reduziert werden kann. (Geerbt von Expression) |