Expression<TDelegate> Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Representa uma expressão lambda fortemente tipada como uma estrutura de dados na forma de uma árvore de expressão. Essa classe não pode ser herdada.
generic <typename TDelegate>
public ref class Expression sealed : System::Linq::Expressions::LambdaExpression
public sealed class Expression<TDelegate> : System.Linq.Expressions.LambdaExpression
type Expression<'Delegate> = class
inherit LambdaExpression
Public NotInheritable Class Expression(Of TDelegate)
Inherits LambdaExpression
Parâmetros de tipo
- TDelegate
O tipo do delegado que o Expression<TDelegate> representa.
- Herança
Exemplos
O exemplo de código a seguir demonstra como representar uma expressão lambda como código executável na forma de um delegado e como dados na forma de uma árvore de expressão. Ele também demonstra como transformar a árvore de expressão de volta em código executável usando o Compile método.
// Lambda expression as executable code.
Func<int, bool> deleg = i => i < 5;
// Invoke the delegate and display the output.
Console.WriteLine("deleg(4) = {0}", deleg(4));
// Lambda expression as data in the form of an expression tree.
System.Linq.Expressions.Expression<Func<int, bool>> expr = i => i < 5;
// Compile the expression tree into executable code.
Func<int, bool> deleg2 = expr.Compile();
// Invoke the method and print the output.
Console.WriteLine("deleg2(4) = {0}", deleg2(4));
/* This code produces the following output:
deleg(4) = True
deleg2(4) = True
*/
' Lambda expression as executable code.
Dim deleg As Func(Of Integer, Boolean) = Function(ByVal i) i < 5
' Invoke the delegate and display the output.
MsgBox(String.Format("deleg(4) = {0}", deleg(4)))
' Lambda expression as data in the form of an expression tree.
Dim expr As System.Linq.Expressions.Expression(Of Func(Of Integer, Boolean)) = Function(ByVal i) i < 5
' Compile the expression tree into executable code.
Dim deleg2 As Func(Of Integer, Boolean) = expr.Compile()
' Invoke the method and print the output.
MsgBox(String.Format("deleg2(4) = {0}", deleg2(4)))
' This code produces the following output:
'
' deleg(4) = True
' deleg2(4) = True
Comentários
Quando uma expressão lambda é atribuída a uma variável, campo ou parâmetro cujo tipo é Expression<TDelegate>, o compilador emite instruções para criar uma árvore de expressão.
Note
Existe uma conversão de uma expressão lambda para tipo Expression<D> (Expression(Of D) no Visual Basic) se houver uma conversão da expressão lambda para um representante do tipo D . No entanto, a conversão poderá falhar, por exemplo, se o corpo da expressão lambda for um bloco. Isso significa que representantes e árvores de expressão se comportam da mesma forma em relação à resolução de sobrecarga.
A árvore de expressão é uma representação de dados na memória da expressão lambda. A árvore de expressão torna a estrutura da expressão lambda transparente e explícita. Você pode interagir com os dados na árvore de expressão da mesma forma que puder com qualquer outra estrutura de dados.
A capacidade de tratar expressões como estruturas de dados permite que as APIs recebam código do usuário em um formato que pode ser inspecionado, transformado e processado de maneira personalizada. Por exemplo, a implementação de acesso a dados LINQ to SQL usa essa instalação para traduzir árvores de expressão para instruções Transact-SQL que podem ser avaliadas pelo banco de dados.
Muitos operadores de consulta padrão definidos na Queryable classe têm um ou mais parâmetros do tipo Expression<TDelegate>.
O NodeType de um Expression<TDelegate> é Lambda.
Use o método ou Lambda<TDelegate>(Expression, ParameterExpression[]) o Lambda<TDelegate>(Expression, IEnumerable<ParameterExpression>) método para criar um Expression<TDelegate> objeto.
Propriedades
| Nome | Description |
|---|---|
| Body |
Obtém o corpo da expressão lambda. (Herdado de LambdaExpression) |
| CanReduce |
Indica que o nó pode ser reduzido a um nó mais simples. Se isso retornar true, Reduce() poderá ser chamado para produzir o formulário reduzido. (Herdado de Expression) |
| Name |
Obtém o nome da expressão lambda. (Herdado de LambdaExpression) |
| NodeType |
Retorna o tipo de nó deste Expression. (Herdado de LambdaExpression) |
| Parameters |
Obtém os parâmetros da expressão lambda. (Herdado de LambdaExpression) |
| ReturnType |
Obtém o tipo de retorno da expressão lambda. (Herdado de LambdaExpression) |
| TailCall |
Obtém o valor que indica se a expressão lambda será compilada com a otimização de chamada final. (Herdado de LambdaExpression) |
| Type |
Obtém o tipo estático da expressão que isso Expression representa. (Herdado de LambdaExpression) |
Métodos
| Nome | Description |
|---|---|
| Accept(ExpressionVisitor) |
Envia para o método de visita específico para esse tipo de nó. Por exemplo, MethodCallExpression chama o VisitMethodCall(MethodCallExpression). (Herdado de Expression) |
| Compile() |
Compila a expressão lambda descrita pela árvore de expressão em código executável e produz um delegado que representa a expressão lambda. |
| Compile(Boolean) |
Compila a expressão lambda descrita pela árvore de expressão em código interpretado ou compilado e produz um delegado que representa a expressão lambda. |
| Compile(DebugInfoGenerator) |
Produz um delegado que representa a expressão lambda. |
| CompileToMethod(MethodBuilder, DebugInfoGenerator) |
Compila o lambda em uma definição de método e informações de depuração personalizadas. (Herdado de LambdaExpression) |
| CompileToMethod(MethodBuilder) |
Compila o lambda em uma definição de método. (Herdado de LambdaExpression) |
| Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
| GetHashCode() |
Serve como a função de hash padrão. (Herdado de Object) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| MemberwiseClone() |
Cria uma cópia superficial do Objectatual. (Herdado de Object) |
| Reduce() |
Reduz esse nó a uma expressão mais simples. Se CanReduce retornar true, isso deverá retornar uma expressão válida. Esse método pode retornar outro nó que deve ser reduzido. (Herdado de Expression) |
| ReduceAndCheck() |
Reduz esse nó a uma expressão mais simples. Se CanReduce retornar true, isso deverá retornar uma expressão válida. Esse método pode retornar outro nó que deve ser reduzido. (Herdado de Expression) |
| ReduceExtensions() |
Reduz a expressão a um tipo de nó conhecido (que não é um nó de extensão) ou apenas retorna a expressão se já for um tipo conhecido. (Herdado de Expression) |
| ToString() |
Retorna uma representação textual do Expression. (Herdado de Expression) |
| Update(Expression, IEnumerable<ParameterExpression>) |
Cria uma nova expressão semelhante a esta, mas usando os filhos fornecidos. Se todas as crianças forem iguais, ela retornará essa expressão. |
| VisitChildren(ExpressionVisitor) |
Reduz o nó e, em seguida, chama o delegado visitante na expressão reduzida. O método gerará uma exceção se o nó não for reduível. (Herdado de Expression) |