Exportieren (0) Drucken
Alle erweitern
Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen.
Übersetzung
Original

Expression<TDelegate>-Klasse

Stellt einen stark typisierten Lambdaausdruck als Datenstruktur in Form einer Ausdrucksbaumstruktur dar. Die Klasse erlaubt keine Vererbung.

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

public sealed class Expression<TDelegate> : LambdaExpression

Typparameter

TDelegate

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

Der Expression<TDelegate>-Typ macht die folgenden Member verfügbar.

  NameBeschreibung
Öffentliche EigenschaftBb335710.PortableClassLibrary(de-de,VS.100).gifBodyRuft den Text des Lambdaausdrucks ab. (Von LambdaExpression geerbt.)
Öffentliche EigenschaftCanReduceGibt 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. (Von Expression geerbt.)
Öffentliche EigenschaftNameRuft den Namen des Lambdaausdrucks ab. (Von LambdaExpression geerbt.)
Öffentliche EigenschaftNodeTypeGibt den Knotentyp dieses Expression zurück. (Von LambdaExpression geerbt.)
Öffentliche EigenschaftBb335710.PortableClassLibrary(de-de,VS.100).gifParametersRuft die Parameter des Lambdaausdrucks ab. (Von LambdaExpression geerbt.)
Öffentliche EigenschaftReturnTypeRuft den Rückgabetyp des Lambdaausdrucks ab. (Von LambdaExpression geerbt.)
Öffentliche EigenschaftTailCallRuft den Wert ab, der angibt, ob der Lambdaausdruck mit der Endeaufrufoptimierung kompiliert wird. (Von LambdaExpression geerbt.)
Öffentliche EigenschaftTypeRuft den statischen Typ des Ausdrucks ab, den diese Expression darstellt. (Von LambdaExpression geerbt.)
Zum Seitenanfang

  NameBeschreibung
Geschützte MethodeAcceptSendet an die spezifische Visit-Methode für diesen Knotentyp. Beispielsweise wird VisitMethodCall von MethodCallExpression aufgerufen. (Von Expression geerbt.)
Öffentliche MethodeBb335710.PortableClassLibrary(de-de,VS.100).gifCompile()Kompiliert den von der Ausdrucksbaumstruktur beschriebenen Lambda-Ausdruck in ausführbaren Code und erzeugt einen Delegaten, der den Lambda-Ausdruck darstellt.
Öffentliche MethodeCompile(DebugInfoGenerator)Erzeugt einen Delegaten, der den Lambdaausdruck darstellt.
Öffentliche MethodeCompileToMethod(MethodBuilder)Kompiliert den Lambdaausdruck in eine Methodendefinition. (Von LambdaExpression geerbt.)
Öffentliche MethodeCompileToMethod(MethodBuilder, DebugInfoGenerator)Kompiliert den Lambdaausdruck in eine Methodendefinition und benutzerdefinierte Debuginformationen. (Von LambdaExpression geerbt.)
Öffentliche MethodeBb335710.PortableClassLibrary(de-de,VS.100).gifEquals(Object) Bestimmt, ob das übergegebene Object und das aktuelle Object gleich sind. (Von Object geerbt.)
Geschützte MethodeBb335710.PortableClassLibrary(de-de,VS.100).gifFinalize Gibt einem Objekt Gelegenheit, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der Garbage Collection freigegeben wird. (Von Object geerbt.)
Öffentliche MethodeBb335710.PortableClassLibrary(de-de,VS.100).gifGetHashCodeFungiert als Hashfunktion für einen bestimmten Typ. (Von Object geerbt.)
Öffentliche MethodeBb335710.PortableClassLibrary(de-de,VS.100).gifGetTypeRuft den Type der aktuellen Instanz ab. (Von Object geerbt.)
Geschützte MethodeBb335710.PortableClassLibrary(de-de,VS.100).gifMemberwiseCloneErstellt eine flache Kopie des aktuellen Object. (Von Object geerbt.)
Öffentliche MethodeReduceReduziert 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. (Von Expression geerbt.)
Öffentliche MethodeReduceAndCheckReduziert 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. (Von Expression geerbt.)
Öffentliche MethodeReduceExtensionsReduziert den Ausdruck zu einem bekannten Knotentyp (kein Erweiterungsknoten) oder gibt nur den Ausdruck zurück, wenn es sich um einen bereits bekannten Typ handelt. (Von Expression geerbt.)
Öffentliche MethodeBb335710.PortableClassLibrary(de-de,VS.100).gifToStringGibt eine Textdarstellung der Expression zurück. (Von Expression geerbt.)
Öffentliche MethodeUpdateErstellt einen neuen Ausdruck wie diesen, verwendet jedoch die angegebenen untergeordneten Elemente. Wenn alle untergeordneten Elemente übereinstimmen, wird der Ausdruck zurückgegeben.
Geschützte MethodeVisitChildrenReduziert 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. (Von Expression geerbt.)
Zum Seitenanfang

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.

HinweisHinweis

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
            */



.NET Framework

Unterstützt in: 4, 3.5

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Unterstützt in:

Windows 7, Windows Vista SP1 oder höher, Windows XP SP3, Windows Server 2008 (Server Core wird nicht unterstützt), Windows Server 2008 R2 (Server Core wird mit SP1 oder höher unterstützt), Windows Server 2003 SP2

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

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

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2015 Microsoft