Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original
Dieser Artikel wurde noch nicht bewertet - Dieses Thema bewerten.

Expression.Lambda-Methode (Type, Expression, IEnumerable<ParameterExpression>)

Erstellt eine LambdaExpression, indem zuerst ein Delegattyp konstruiert wird. Kann verwendet werden, wenn der Delegattyp zur Kompilierzeit nicht bekannt ist.

Namespace:  System.Linq.Expressions
Assembly:  System.Core (in System.Core.dll)
public static LambdaExpression Lambda(
	Type delegateType,
	Expression body,
	IEnumerable<ParameterExpression> parameters
)

Parameter

delegateType
Typ: System.Type
Ein Type, das eine Delegatsignatur für das Lambda darstellt.
body
Typ: System.Linq.Expressions.Expression
Ein Expression, auf das die Body-Eigenschaft festgelegt werden soll.
parameters
Typ: System.Collections.Generic.IEnumerable<ParameterExpression>
Ein IEnumerable<T> mit ParameterExpression-Objekten, mit denen die Parameters-Auflistung aufgefüllt wird.

Rückgabewert

Typ: System.Linq.Expressions.LambdaExpression
Ein Objekt, das einen Lambdaausdruck darstellt, bei dem die NodeType-Eigenschaft gleich Lambda ist und die Body-Eigenschaft sowie die Parameters-Eigenschaft auf die angegebenen Werte festgelegt sind.
AusnahmeBedingung
ArgumentNullException

delegateType oder body ist null.

- oder -

Eines oder mehrere Elemente in parameters sind null.

ArgumentException

delegateType stellt keinen Delegattyp dar.

- oder -

body.Type stellt einen Typ dar, der nicht dem Rückgabetyp des durch delegateType dargestellten Delegatentyps zugeordnet werden kann.

- oder -

parameters enthält nicht dieselbe Anzahl an Elementen wie die Liste der Parameter für den durch delegateType dargestellten Delegattyp.

- oder -

Die Type-Eigenschaft eines Elements von parameters kann nicht dem Typ des entsprechenden Parametertyps des durch delegateType dargestellten Delegattyps zugeordnet werden.

Das von dieser Funktion zurückgegebene Objekt weist den Expression<TDelegate>-Typ auf. Der LambdaExpression-Typ wird zum Darstellen des zurückgegebenen Objekts verwendet, da der konkrete Typ des Lambdaausdrucks zur Kompilierzeit nicht bekannt ist.

Die Anzahl von Parametern für den Delegattyp, der durch delegateType dargestellt wird, muss der Länge von parameters entsprechen.

Die Elemente von parameters müssen wertgleich den Parameterausdrücken in body sein.

Die Type-Eigenschaft des resultierenden Objekts ist gleich dem delegateType. Wenn parameters gleich null ist, ist die Parameters-Eigenschaft des resultierenden Objekts eine leere Auflistung.

Im folgenden Beispiel wird veranschaulicht, wie ein Ausdruck erstellt wird, der einen Lambda-Ausdruck darstellt, der dem übergebenen Argument 1 hinzufügt.


// Add the following directive to your file:
// using System.Linq.Expressions;  

// A parameter for the lambda expression.
ParameterExpression paramExpr = Expression.Parameter(typeof(int), "arg");

// This expression represents a lambda expression
// that adds 1 to the parameter value.
LambdaExpression lambdaExpr = Expression.Lambda(
    Expression.Add(
        paramExpr,
        Expression.Constant(1)
    ),
    new List<ParameterExpression>() { paramExpr }
);

// Print out the expression.
Console.WriteLine(lambdaExpr);

// Compile and run the lamda expression.
// The value of the parameter is 1.
Console.WriteLine(lambdaExpr.Compile().DynamicInvoke(1));

// This code example produces the following output:
//
// arg => (arg +1)
// 2


.NET Framework

Unterstützt in: 4.5, 4, 3.5

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Portable Klassenbibliothek

Unterstützt in: Portable Klassenbibliothek

.NET für Windows Store-Apps

Unterstützt in: Windows 8

Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.
Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)

Community-Beiträge

HINZUFÜGEN
© 2013 Microsoft. Alle Rechte vorbehalten.