Expression<TDelegate> Klasse

Definition

Stellt einen stark typisierten lambda-Ausdruck als Datenstruktur in Form einer Ausdrucksbaumstruktur dar.Represents a strongly typed lambda expression as a data structure in the form of an expression tree. Diese Klasse kann nicht vererbt werden.This class cannot be inherited.

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.The type of the delegate that the Expression<TDelegate> represents.

Vererbung
Expression<TDelegate>

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie ein Lambda-Ausdruck sowohl als ausführbarer Code in Form eines Delegaten als auch als Daten in Form einer Ausdrucks Baumstruktur dargestellt wird.The following code example demonstrates how to represent a lambda expression both as executable code in the form of a delegate and as data in the form of an expression tree. Außerdem wird veranschaulicht, wie Sie die Ausdrucks Baumstruktur mithilfe der-Methode wieder in ausführbaren Code umwandeln Compile .It also demonstrates how to turn the expression tree back into executable code by using the Compile method.


// 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 Lambda-Ausdruck einer Variablen, einem Feld oder einem Parameter zugewiesen wird, deren Typ ist Expression<TDelegate> , gibt der Compiler Anweisungen zum Erstellen einer Ausdrucks Baumstruktur aus.When a lambda expression is assigned to a variable, field, or parameter whose type is Expression<TDelegate>, the compiler emits instructions to build an expression tree.

Hinweis

Eine Konvertierung von einem Lambda-Ausdruck in Expression<D> einen Typ ( Expression(Of D) in Visual Basic) ist vorhanden, wenn eine Konvertierung des Lambda-Ausdrucks in einen Delegaten vom Typ D vorhanden ist.A conversion from a lambda expression to type Expression<D> (Expression(Of D) in Visual Basic) exists if a conversion from the lambda expression to a delegate of type D exists. Die Konvertierung kann jedoch fehlschlagen, z. b. wenn der Text des Lambda-Ausdrucks ein Block ist.However, the conversion may fail, for example, if the body of the lambda expression is a block. Dies bedeutet, dass Delegaten und Ausdrucks Baumstrukturen in Bezug auf die Überladungs Auflösung ähnlich verhalten.This means that delegates and expression trees behave similarly with regard to overload resolution.

Die Ausdrucks Baumstruktur ist eine in-Memory-Datendarstellung des Lambda-Ausdrucks.The expression tree is an in-memory data representation of the lambda expression. Die Ausdrucks Baumstruktur bewirkt, dass die Struktur des Lambda Ausdrucks transparent und explizit ist.The expression tree makes the structure of the lambda expression transparent and explicit. Sie können mit den Daten in der Ausdrucks Baumstruktur genauso wie mit jeder anderen Datenstruktur interagieren.You can interact with the data in the expression tree just as you can with any other data structure.

Die Fähigkeit, Ausdrücke als Datenstrukturen zu behandeln, ermöglicht APIs das Empfangen von Benutzercode in einem Format, das auf benutzerdefinierte Weise überprüft, transformiert und verarbeitet werden kann.The ability to treat expressions as data structures enables APIs to receive user code in a format that can be inspected, transformed, and processed in a custom manner. Beispielsweise verwendet die Implementierung des LINQ to SQL Data Access diese Funktion zum Übersetzen von Ausdrucks Baumstrukturen in Transact-SQL-Anweisungen, die von der Datenbank ausgewertet werden können.For example, the LINQ to SQL data access implementation uses this facility to translate expression trees to Transact-SQL statements that can be evaluated by the database.

Viele Standard Abfrage Operatoren, die in der- Queryable Klasse definiert sind, verfügen über einen oder mehrere Parameter des Typs Expression<TDelegate> .Many standard query operators defined in the Queryable class have one or more parameters of type Expression<TDelegate>.

Der NodeType einer Expression<TDelegate> ist Lambda .The NodeType of an Expression<TDelegate> is Lambda.

Verwenden Sie die- Lambda<TDelegate>(Expression, IEnumerable<ParameterExpression>) Methode oder die- Lambda<TDelegate>(Expression, ParameterExpression[]) Methode zum Erstellen eines- Expression<TDelegate> ObjektsUse the Lambda<TDelegate>(Expression, IEnumerable<ParameterExpression>) or Lambda<TDelegate>(Expression, ParameterExpression[]) method to create an Expression<TDelegate> object.

Eigenschaften

Body

Ruft den Text des Lambdaausdrucks ab.Gets the body of the lambda expression.

(Geerbt von LambdaExpression)
CanReduce

Gibt an, dass der Knoten zu einem einfacheren Knoten reduziert werden kann.Indicates that the node can be reduced to a simpler node. Wenn true zurückgegeben wird, kann Reduce() aufgerufen werden, um das reduzierte Formular zu erzeugen.If this returns true, Reduce() can be called to produce the reduced form.

(Geerbt von Expression)
Name

Ruft den Namen des Lambdaausdrucks ab.Gets the name of the lambda expression.

(Geerbt von LambdaExpression)
NodeType

Gibt den Knotentyp dieses Expression zurück.Returns the node type of this Expression.

(Geerbt von LambdaExpression)
Parameters

Ruft die Parameter des Lambdaausdrucks ab.Gets the parameters of the lambda expression.

(Geerbt von LambdaExpression)
ReturnType

Ruft den Rückgabetyp des Lambdaausdrucks ab.Gets the return type of the lambda expression.

(Geerbt von LambdaExpression)
TailCall

Ruft den Wert ab, der angibt, ob der Lambdaausdruck mit der Endeaufrufoptimierung kompiliert wird.Gets the value that indicates if the lambda expression will be compiled with the tail call optimization.

(Geerbt von LambdaExpression)
Type

Ruft den statischen Typ des Ausdrucks ab, den dieser Expression darstellt.Gets the static type of the expression that this Expression represents.

(Geerbt von LambdaExpression)

Methoden

Accept(ExpressionVisitor)

Sendet an die spezifische Visit-Methode für diesen Knotentyp.Dispatches to the specific visit method for this node type. Beispielsweise ruft MethodCallExpression die Methode VisitMethodCall(MethodCallExpression) auf.For example, MethodCallExpression calls the VisitMethodCall(MethodCallExpression).

(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.Compiles the lambda expression described by the expression tree into executable code and produces a delegate that represents the lambda expression.

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.Compiles the lambda expression described by the expression tree into interpreted or compiled code and produces a delegate that represents the lambda expression.

Compile(Boolean)

Erzeugt einen interpretierten oder kompilierten Delegat, der den Lambdaausdruck darstellt.Produces an interpreted or compiled delegate that represents the lambda expression.

(Geerbt von LambdaExpression)
Compile(DebugInfoGenerator)

Erzeugt einen Delegaten, der den Lambdaausdruck darstellt.Produces a delegate that represents the lambda expression.

Compile(DebugInfoGenerator)

Erzeugt einen Delegaten, der den Lambdaausdruck darstellt.Produces a delegate that represents the lambda expression.

(Geerbt von LambdaExpression)
CompileToMethod(MethodBuilder)

Kompiliert den Lambdaausdruck in eine Methodendefinition.Compiles the lambda into a method definition.

(Geerbt von LambdaExpression)
CompileToMethod(MethodBuilder, DebugInfoGenerator)

Kompiliert den Lambdaausdruck in eine Methodendefinition und benutzerdefinierte Debuginformationen.Compiles the lambda into a method definition and custom debug information.

(Geerbt von LambdaExpression)
Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.Determines whether the specified object is equal to the current object.

(Geerbt von Object)
GetHashCode()

Fungiert als Standardhashfunktion.Serves as the default hash function.

(Geerbt von Object)
GetType()

Ruft den Type der aktuellen Instanz ab.Gets the Type of the current instance.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.Creates a shallow copy of the current Object.

(Geerbt von Object)
Reduce()

Reduziert diesen Knoten zu einem einfacheren Ausdruck.Reduces this node to a simpler expression. Wenn CanReduce true zurückgibt, sollte ein gültiger Ausdruck zurückgegeben werden.If CanReduce returns true, this should return a valid expression. Diese Methode kann einen anderen Knoten zurückgeben, der selbst reduziert werden muss.This method can return another node which itself must be reduced.

(Geerbt von Expression)
ReduceAndCheck()

Reduziert diesen Knoten zu einem einfacheren Ausdruck.Reduces this node to a simpler expression. Wenn CanReduce true zurückgibt, sollte ein gültiger Ausdruck zurückgegeben werden.If CanReduce returns true, this should return a valid expression. Diese Methode kann einen anderen Knoten zurückgeben, der selbst reduziert werden muss.This method can return another node which itself must be reduced.

(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.Reduces the expression to a known node type (that is not an Extension node) or just returns the expression if it is already a known type.

(Geerbt von Expression)
ToString()

Gibt eine Textdarstellung des Expression zurück.Returns a textual representation of the Expression.

(Geerbt von Expression)
Update(Expression, IEnumerable<ParameterExpression>)

Erstellt einen neuen Ausdruck, der diesem ähnelt, verwendet jedoch die angegebenen untergeordneten Elemente.Creates a new expression that is like this one, but using the supplied children. Wenn alle untergeordneten Elemente identisch sind, wird dieser Ausdruck zurückgegeben.If all of the children are the same, it will return this expression.

VisitChildren(ExpressionVisitor)

Reduziert den Knoten und ruft dann den Visitor-Delegaten für den reduzierten Ausdruck auf.Reduces the node and then calls the visitor delegate on the reduced expression. Die Methode löst eine Ausnahme aus, wenn der Knoten nicht reduziert werden kann.The method throws an exception if the node is not reducible.

(Geerbt von Expression)

Gilt für: