Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

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

 

Veröffentlicht: Oktober 2016

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
Type: System.Type

Ein Type, das eine Delegatsignatur für das Lambda darstellt.

body
Type: System.Linq.Expressions.Expression

Ein Expression, auf den die Body-Eigenschaft festgelegt werden soll.

parameters
Type: System.Collections.Generic.IEnumerable<ParameterExpression>

Ein IEnumerable<T>, das ParameterExpression-Objekte enthält, mit denen die Parameters-Auflistung aufgefüllt werden soll.

Rückgabewert

Type: 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.

Exception Condition
ArgumentNullException

delegateType oder body ist null.

- oder -

Mindestens ein parameters-Element ist null.

ArgumentException

delegateType Stellt einen Delegattyp keine dar.

- oder -

body. Typ stellt einen Typ, der nicht in den Rückgabetyp des durch dargestellten Delegattyps zugeordnet werden delegateType.

- oder -

parameters enthält nicht die gleiche Anzahl von Elementen wie die Liste der Parameter für den Typ des Delegaten dargestellte delegateType.

- oder -

Die Type Eigenschaft eines Elements von parameters lässt sich nicht aus dem Typ des entsprechenden Parametertyps des durch dargestellten Delegattyps delegateType.

Das Objekt, das von dieser Funktion zurückgegeben wird, ist vom Typ Expression<TDelegate>. Die LambdaExpression Typ wird verwendet, um das zurückgegebene Objekt darstellen, da der konkrete Typ des Lambdaausdrucks zur Kompilierzeit nicht bekannt ist.

Die Anzahl von Parametern für den Delegattyp, der durch dargestelltendelegateType muss gleich der Länge des parameters.

Die Elemente der parameters muss identisch sein, Verweis auf die Ausdrücke in body.

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

Im folgenden Beispiel wird veranschaulicht, wie einen Ausdruck erstellt, der einen Lambda-Ausdruck darstellt, der das übergebene 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

Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 3.5
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Windows Phone
Verfügbar seit 8.1
Zurück zum Anfang
Anzeigen: