Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo Expression.Lambda (Type, Expression, IEnumerable<ParameterExpression>)

 

Data di pubblicazione: ottobre 2016

Crea un oggetto LambdaExpression costruendo prima un tipo delegato. Può essere usato quando il tipo delegato non è noto in fase di compilazione.

Spazio dei nomi:   System.Linq.Expressions
Assembly:  System.Core (in System.Core.dll)

public static LambdaExpression Lambda(
	Type delegateType,
	Expression body,
	IEnumerable<ParameterExpression> parameters
)

Parametri

delegateType
Type: System.Type

Oggetto Type che rappresenta una firma di delegato per l'espressione lambda.

body
Type: System.Linq.Expressions.Expression

Oggetto Expression su cui impostare la proprietà Body.

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

Oggetto IEnumerable<T> contenente gli oggetti ParameterExpression da usare per popolare la raccolta Parameters.

Valore restituito

Type: System.Linq.Expressions.LambdaExpression

Oggetto che rappresenta un'espressione lambda la cui proprietà NodeType è uguale a Lambda e le cui proprietà Body e Parameters sono impostate sui valori specificati.

Exception Condition
ArgumentNullException

delegateType o body è null.

-oppure-

Uno o più elementi in parameters sono null.

ArgumentException

delegateType non rappresenta un tipo delegato.

-oppure-

body. Tipo rappresenta un tipo che non è assegnabile al tipo restituito del tipo di delegato rappresentato da delegateType.

-oppure-

parameters non contiene lo stesso numero di elementi dell'elenco di parametri per il tipo di delegato rappresentato da delegateType.

-oppure-

Il Type proprietà di un elemento di parameters non è assegnabile dal tipo del tipo di parametro corrispondente del tipo di delegato rappresentato da delegateType.

L'oggetto restituito da questa funzione è di tipo Expression<TDelegate>. Il LambdaExpression tipo viene utilizzato per rappresentare l'oggetto restituito perché il tipo concreto dell'espressione lambda non è noto in fase di compilazione.

Il numero di parametri per il tipo di delegato rappresentato dadelegateType deve uguale alla lunghezza di parameters.

Gli elementi di parameters deve essere uguale alle espressioni dei parametri di riferimento body.

Il Type proprietà dell'oggetto risultante è uguale a delegateType. Se parameters è null, Parameters proprietà dell'oggetto risultante è una raccolta vuota.

Nell'esempio seguente viene illustrato come creare un'espressione che rappresenta un'espressione lambda che aggiunge 1 all'argomento passato.

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

Universal Windows Platform
Disponibile da 8
.NET Framework
Disponibile da 3.5
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.0
Windows Phone
Disponibile da 8.1
Torna all'inizio
Mostra: