Freigeben über


Expression<TDelegate> Klasse

Definition

Stellt einen stark typierten Lambda-Ausdruck als Datenstruktur in Form einer Ausdrucksstruktur 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 der Stellvertretung, die sie Expression<TDelegate> darstellt.

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 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 einem Lambda-Ausdruck eine Variable, ein Feld oder einen Parameter zugewiesen wird, deren Typ lautet Expression<TDelegate>, gibt der Compiler Anweisungen zum Erstellen einer Ausdrucksstruktur aus.

Note

Eine Konvertierung von einem Lambda-Ausdruck in typ Expression<D> (Expression(Of D) in Visual Basic) ist vorhanden, wenn eine Konvertierung vom Lambda-Ausdruck in einen Delegat des Typs D vorhanden ist. Die Konvertierung kann jedoch fehlschlagen, z. B. wenn der Textkörper des Lambda-Ausdrucks ein Block ist. Dies bedeutet, dass sich Stellvertretungen und Ausdrucksstrukturen in Bezug auf die Überladungsauflösung ähnlich verhalten.

Die Ausdrucksstruktur ist eine Speicherdatendarstellung des Lambda-Ausdrucks. Die Ausdrucksstruktur macht die Struktur des Lambda-Ausdrucks transparent und explizit. Sie können mit den Daten in der Ausdrucksstruktur genauso wie mit jeder anderen Datenstruktur interagieren.

Die Möglichkeit, Ausdrücke als Datenstrukturen zu behandeln, ermöglicht APIs das Empfangen von Benutzercode in einem Format, das überprüft, transformiert und auf benutzerdefinierte Weise verarbeitet werden kann. Beispielsweise verwendet die LINQ to SQL-Datenzugriffsimplementierung diese Einrichtung, um Ausdrucksstrukturen 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>.

Das NodeType von einem Expression<TDelegate> ist Lambda.

Verwenden Sie die Lambda<TDelegate>(Expression, IEnumerable<ParameterExpression>) Methode, Lambda<TDelegate>(Expression, ParameterExpression[]) um ein Expression<TDelegate> Objekt zu erstellen.

Eigenschaften

Name Beschreibung
Body

Ruft den Textkörper des Lambda-Ausdrucks ab.

(Geerbt von LambdaExpression)
CanReduce

Gibt an, dass der Knoten auf einen einfacheren Knoten reduziert werden kann. Wenn dies "true" zurückgibt, kann "Reduce()" aufgerufen werden, um die reduzierte Form zu erzeugen.

(Geerbt von Expression)
Name

Ruft den Namen des Lambda-Ausdrucks ab.

(Geerbt von LambdaExpression)
NodeType

Gibt den Knotentyp dieses Typs Expressionzurück.

(Geerbt von LambdaExpression)
Parameters

Ruft die Parameter des Lambda-Ausdrucks ab.

(Geerbt von LambdaExpression)
ReturnType

Ruft den Rückgabetyp des Lambda-Ausdrucks ab.

(Geerbt von LambdaExpression)
TailCall

Ruft den Wert ab, der angibt, ob der Lambda-Ausdruck mit der Tail-Aufrufoptimierung kompiliert wird.

(Geerbt von LambdaExpression)
Type

Ruft den statischen Typ des Ausdrucks ab, der dies Expression darstellt.

(Geerbt von LambdaExpression)

Methoden

Name Beschreibung
Accept(ExpressionVisitor)

Verteilt an die spezifische Besuchsmethode für diesen Knotentyp. Ruft z. B. MethodCallExpression die VisitMethodCall(MethodCallExpression).

(Geerbt von Expression)
Compile()

Kompiliert den lambda-Ausdruck, der durch die Ausdrucksstruktur beschrieben wird, in ausführbaren Code und erzeugt einen Delegaten, der den Lambda-Ausdruck darstellt.

Compile(Boolean)

Kompiliert den lambda-Ausdruck, der von der Ausdrucksstruktur in interpretierten oder kompilierten Code beschrieben wird, und erzeugt einen Delegaten, der den Lambda-Ausdruck darstellt.

Compile(DebugInfoGenerator)

Erzeugt einen Delegaten, der den Lambda-Ausdruck darstellt.

CompileToMethod(MethodBuilder, DebugInfoGenerator)

Kompiliert die Lambda-Funktion in einer Methodendefinition und benutzerdefinierten Debuginformationen.

(Geerbt von LambdaExpression)
CompileToMethod(MethodBuilder)

Kompiliert die Lambda-Funktion in einer Methodendefinition.

(Geerbt von LambdaExpression)
Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
GetHashCode()

Dient als die Standard-Hashfunktion

(Geerbt von Object)
GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
Reduce()

Reduziert diesen Knoten auf einen einfacheren Ausdruck. Wenn CanReduce "true" zurückgibt, sollte dieser einen gültigen Ausdruck zurückgeben. Diese Methode kann einen anderen Knoten zurückgeben, der selbst reduziert werden muss.

(Geerbt von Expression)
ReduceAndCheck()

Reduziert diesen Knoten auf einen einfacheren Ausdruck. Wenn CanReduce "true" zurückgibt, sollte dieser einen gültigen Ausdruck zurückgeben. Diese Methode kann einen anderen Knoten zurückgeben, der selbst reduziert werden muss.

(Geerbt von Expression)
ReduceExtensions()

Reduziert den Ausdruck auf einen bekannten Knotentyp (der kein Erweiterungsknoten ist) oder gibt nur den Ausdruck zurück, wenn er bereits ein bekannter Typ ist.

(Geerbt von Expression)
ToString()

Gibt eine Textdarstellung der Expression.

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

Erstellt einen neuen Ausdruck, der wie dieser ist, aber die bereitgestellten untergeordneten Elemente verwenden. Wenn alle untergeordneten Elemente gleich sind, wird dieser Ausdruck zurückgegeben.

VisitChildren(ExpressionVisitor)

Reduziert den Knoten und ruft dann den Besucherdelegat für den reduzierten Ausdruck auf. Die Methode löst eine Ausnahme aus, wenn der Knoten nicht reducierbar ist.

(Geerbt von Expression)

Gilt für:

Weitere Informationen