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

Gewusst wie: Ausführen von Ausdrucksbaumstrukturen (C# und Visual Basic)

In diesem Thema wird beschrieben, wie eine Ausdrucksbaumstruktur ausgeführt wird. Das Ausführen einer Ausdrucksbaumstruktur kann einen Wert zurückgeben oder nur eine Aktion ausführen, wie z. B. das Aufrufen einer Methode.

Nur Ausdrucksbaumstrukturen, die Lambdaausdrücke darstellen, können ausgeführt werden. Ausdrucksbaumstrukturen, die Lambdaausdrücke darstellen, sind vom Typ LambdaExpression oder Expression<TDelegate>. Um diese Ausdrucksbaumstrukturen auszuführen, rufen Sie die Compile-Methode auf, um ein ausführbares Delegat zu erstellen und das Delegat dann aufzurufen.

Hinweis Hinweis

Wenn der Typ des Delegats nicht bekannt ist, d. h., wenn der Lambdaausdruck vom Typ LambdaExpression und nicht vom Typ Expression<TDelegate> ist, müssen Sie die DynamicInvoke-Methode für das Delegat aufrufen anstatt das Delegat direkt aufzurufen.

Wenn eine Ausdrucksbaumstruktur keinen Lambdaausdruck darstellt, können Sie einen neuen Lambdaausdruck erstellen, der die ursprüngliche Ausdrucksbaumstruktur als Text enthält, indem Sie die Lambda<TDelegate>(Expression, IEnumerable<ParameterExpression>)-Methode aufrufen. Anschließend können Sie den Lambdaausdruck ausführen, wie weiter oben in diesem Abschnitt beschrieben.

Das folgende Codebeispiel veranschaulicht, wie eine Ausdrucksbaumstruktur ausgeführt wird, die eine Zahl potenziert, indem ein Lambdaausdruck erstellt und ausgeführt wird. Das Ergebnis, das die potenzierte Zahl darstellt, wird angezeigt.


            // The expression tree to execute.
            BinaryExpression be = Expression.Power(Expression.Constant(2D), Expression.Constant(3D));

            // Create a lambda expression.
            Expression<Func<double>> le = Expression.Lambda<Func<double>>(be);

            // Compile the lambda expression.
            Func<double> compiledExpression = le.Compile();

            // Execute the lambda expression.
            double result = compiledExpression();

            // Display the result.
            Console.WriteLine(result);

            // This code produces the following output:
            // 8



  • Fügen Sie einen Projektverweis auf System.Core.dll hinzu, wenn er noch nicht existiert.

  • Schließen Sie den System.Linq.Expressions-Namespace ein.

Community-Beiträge

HINZUFÜGEN
Microsoft führt eine Onlineumfrage durch, um Ihre Meinung zur MSDN-Website zu erfahren. Wenn Sie sich zur Teilnahme entscheiden, wird Ihnen die Onlineumfrage angezeigt, sobald Sie die MSDN-Website verlassen.

Möchten Sie an der Umfrage teilnehmen?
Anzeigen:
© 2014 Microsoft