Diese Dokumentation wurde archiviert und wird nicht länger gepflegt.

Expression<TDelegate>-Klasse

Aktualisiert: November 2007

Stellt einen stark typisierten Lambdaausdruck als Datenstruktur in Form einer Ausdrucksbaumstruktur dar. Die Klasse kann nicht geerbt werden.

Namespace:  System.Linq.Expressions
Assembly:  System.Core (in System.Core.dll)

public sealed class Expression<TDelegate> : LambdaExpression

J# unterstützt die Verwendung von generischen APIs, aber nicht die Deklaration von neuen generischen APIs.
JScript unterstützt keine generischen Typen oder Methoden.

Typparameter

TDelegate

Der Typ des Delegaten, der die Expression<TDelegate> darstellt.

Wenn ein Lambdaausdruck einer Variablen, einem Feld oder einem Parameter zugewiesen wird, deren bzw. dessen Typ Expression<TDelegate> ist, gibt der Compiler Anweisungen zum Erstellen einer Ausdrucksbaumstruktur aus.

Bb335710.alert_note(de-de,VS.90).gifHinweis:

Eine Konvertierung aus einem Lambdaausdruck in den Typ Expression<D> (Expression(Of D) in Visual Basic) erfolgt, wenn eine Konvertierung aus dem Lambdaausdruck in einen Delegaten vom D ausgeführt wird. Möglicherweise tritt jedoch ein Fehler bei der Konvertierung auf, beispielsweise, wenn der Text des Lambdaausdrucks ein Block ist. Dies bedeutet, dass Delegaten und Ausdrucksbaumstrukturen ein ähnliches Verhalten in Bezug auf die Auflösung von Überladungen aufweisen.

Die Ausdrucksbaumstruktur ist eine speicherinterne Datendarstellung des Lambdaausdrucks. Durch die Ausdrucksbaumstruktur wird die Struktur des Lambdaausdrucks transparent und explizit festgelegt. Sie können mit den Daten in der Ausdrucksbaumstruktur ebenso wie mit jeder anderen Datenstruktur interagieren.

Durch die Fähigkeit, Ausdrücke als Datenstrukturen zu behandeln, können APIs Benutzercode in einem Format empfangen, das auf benutzerdefinierte Weise analysiert, transformiert und verarbeitet werden kann. Die LINQ to SQL-Datenzugriffsimplementierung nutzt diese Fähigkeit beispielsweise, um Ausdrucksbaumstrukturen in Transact-SQL-Anweisungen umzuwandeln, die von der Datenbank ausgewertet werden können.

Viele in der Queryable-Klasse definierte Standardabfrageoperatoren weisen einen oder mehrere Parameter vom Typ Expression<TDelegate> auf.

Der NodeType einer Expression<TDelegate> ist Lambda.

Erstellen Sie mithilfe der Lambda<TDelegate>(Expression, IEnumerable<ParameterExpression>)-Methode oder der Lambda<TDelegate>(Expression, ParameterExpression[])-Methode ein Expression<TDelegate>-Objekt.

Im folgenden Codebeispiel wird veranschaulicht, wie ein Lambdaausdruck sowohl als ausführbarer Code in Form eines Delegaten als auch als Daten in Form einer Ausdrucksbaumstruktur dargestellt wird. Darüber hinaus wird veranschaulicht, wie die Ausdrucksbaumstruktur mithilfe der Compile-Methode zurück 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
*/



Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Windows Vista, Windows XP SP2, Windows Server 2003

.NET Framework und .NET Compact Framework unterstützen nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

.NET Framework

Unterstützt in: 3.5
Anzeigen: