Esta página foi útil?
Seus comentários sobre este conteúdo são importantes. Queremos saber sua opinião.
Comentários adicionais?
1500 caracteres restantes
Exportar (0) Imprimir
Expandir Tudo
Este artigo foi traduzido por máquina. Coloque o ponteiro do mouse sobre as frases do artigo para ver o texto original. Mais informações.
Tradução
Original

Método Expression.Lambda (Type, Expression, IEnumerable<ParameterExpression>)

Cria LambdaExpression primeiro construindo um tipo delegado. Pode ser usado quando o tipo delegado não é conhecido em tempo de compilação.

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

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

Parâmetros

delegateType
Tipo: System.Type
Type que representa uma assinatura do representante para o método.
body
Tipo: System.Linq.Expressions.Expression
Expression para definir a propriedade de Body igual a.
parameters
Tipo: System.Collections.Generic.IEnumerable<ParameterExpression>
IEnumerable<T> que contém objetos de ParameterExpression para usar preencher a coleção de Parameters .

Valor de retorno

Tipo: System.Linq.Expressions.LambdaExpression
Um objeto que representa uma expressão lambda que possui a propriedade de NodeType igual a Lambda e as propriedades de Body e de Parameters definidas para os valores especificados.

ExceçãoCondição
ArgumentNullException

delegateType ou body são null.

-ou-

Um ou mais elementos em parameters são null.

ArgumentException

delegateType não representa um tipo delegado.

-ou-

body. O tipo representa um tipo que não é assinalável para o tipo de retorno do tipo delegado representado por delegateType.

-ou-

parameters não contém o mesmo número de elementos como a lista de parâmetros para o tipo delegado representado por delegateType.

-ou-

A propriedade de Type de um elemento de parameters não é assinalável de tipo de parâmetro correspondente do tipo delegado representado por delegateType.

O objeto que é retornado dessa função é do tipo Expression<TDelegate>. O tipo de LambdaExpression é usado para representar o objeto retornado porque o tipo concreto da expressão lambda não é conhecido em tempo de compilação.

O número de parâmetros para o tipo delegado representado por delegateType deve igual ao comprimento de parameters.

Os elementos de parameters devem ser igual referência às expressões de parâmetro em body.

A propriedade de Type do objeto resultante é igual a delegateType. Se parameters é null, a propriedade de Parameters do objeto resultante é uma coleção vazia.

O exemplo a seguir demonstra como criar uma expressão que representa uma expressão lambda que adiciona 1 para o argumento passado.


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

Com suporte em: 4.5.2, 4.5.1, 4.5, 4, 3.5

.NET Framework Client Profile

Com suporte em: 4, 3.5 SP1

Biblioteca de Classes Portátil

Com suporte em: Biblioteca de Classes Portátil

.NET para aplicativos da Windows Store

Com suporte em: Windows 8

.NET para aplicativos do Windows Phone

Com suporte em: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Função Server Core sem suporte), Windows Server 2008 R2 (Função Server Core com suporte com o SP1 ou posterior, Itanium sem suporte)

O .NET Framework não oferece suporte a todas as versões de cada plataforma. Para obter uma lista das versões com suporte, consulte Requisitos do sistema do .NET Framework.

Contribuições da comunidade

ADICIONAR
Mostrar:
© 2015 Microsoft