Compartir a través de


Expression<TDelegate> Clase

Definición

Representa una expresión lambda fuertemente tipada como una estructura de datos con el formato de un árbol de expresión. Esta clase no puede heredarse.

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

Tipo de delegado que Expression<TDelegate> representa.

Herencia
Expression<TDelegate>

Ejemplos

En el ejemplo de código siguiente se muestra cómo representar una expresión lambda como código ejecutable en forma de delegado y como datos en forma de árbol de expresión. También muestra cómo volver a convertir el árbol de expresión en código ejecutable mediante el 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

Comentarios

Cuando se asigna una expresión lambda a una variable, campo o parámetro cuyo tipo es Expression<TDelegate>, el compilador emite instrucciones para crear un árbol de expresión.

Nota

Existe una conversión de una expresión lambda al tipo Expression<D> (Expression(Of D) en Visual Basic) si existe una conversión de la expresión lambda a un delegado de tipo D . Sin embargo, la conversión puede producir un error, por ejemplo, si el cuerpo de la expresión lambda es un bloque. Esto significa que los delegados y los árboles de expresión se comportan de forma similar con respecto a la resolución de sobrecargas.

El árbol de expresión es una representación de datos en memoria de la expresión lambda. El árbol de expresión hace que la estructura de la expresión lambda sea transparente y explícita. Puede interactuar con los datos en el árbol de expresiones del mismo modo que con cualquier otra estructura de datos.

La capacidad de tratar expresiones como estructuras de datos permite a las API recibir código de usuario en un formato que se puede inspeccionar, transformar y procesar de forma personalizada. Por ejemplo, la implementación de acceso a datos de LINQ to SQL usa esta función para traducir árboles de expresión a instrucciones Transact-SQL que la base de datos puede evaluar.

Muchos operadores de consulta estándar definidos en la Queryable clase tienen uno o varios parámetros de tipo Expression<TDelegate>.

el NodeType objeto de es LambdaExpression<TDelegate> .

Use el Lambda<TDelegate>(Expression, IEnumerable<ParameterExpression>) método o Lambda<TDelegate>(Expression, ParameterExpression[]) para crear un Expression<TDelegate> objeto .

Propiedades

Body

Obtiene el cuerpo de la expresión lambda.

(Heredado de LambdaExpression)
CanReduce

Indica que el nodo se puede reducir a uno más simple. Si devuelve true, se puede llamar a Reduce() para generar el formulario reducido.

(Heredado de Expression)
Name

Obtiene el nombre de la expresión lambda.

(Heredado de LambdaExpression)
NodeType

Devuelve el tipo de nodo de Expression.

(Heredado de LambdaExpression)
Parameters

Obtiene los parámetros de la expresión lambda.

(Heredado de LambdaExpression)
ReturnType

Obtiene el tipo de valor devuelto de la expresión lambda.

(Heredado de LambdaExpression)
TailCall

Obtiene el valor que indica si la expresión lambda se compilará con la optimización de llamada de cola.

(Heredado de LambdaExpression)
Type

Obtiene el tipo estático de la expresión que Expression representa.

(Heredado de LambdaExpression)

Métodos

Accept(ExpressionVisitor)

Envía la expresión al método de visita específico de este tipo de nodo. Por ejemplo, MethodCallExpression llama a VisitMethodCall(MethodCallExpression).

(Heredado de Expression)
Compile()

Compila la expresión lambda descrita por el árbol de la expresión en el código ejecutable y genera un delegado que representa la expresión lambda.

Compile(Boolean)

Compila la expresión lambda descrita por el árbol de expresión en el código interpretado o compilado y genera a un delegado que representa la expresión lambda.

Compile(Boolean)

Genera a un delegado interpretado o compilado que representa la expresión lambda.

(Heredado de LambdaExpression)
Compile(DebugInfoGenerator)

Genera un delegado que representa la expresión lambda.

Compile(DebugInfoGenerator)

Genera un delegado que representa la expresión lambda.

(Heredado de LambdaExpression)
CompileToMethod(MethodBuilder)

Compila el lambda en una definición de método.

(Heredado de LambdaExpression)
CompileToMethod(MethodBuilder, DebugInfoGenerator)

Compila el lambda en una definición de método e información de depuración personalizada.

(Heredado de LambdaExpression)
Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
Reduce()

Reduce este nodo a una expresión más simple. Si CanReduce devuelve true, debería devolver una expresión válida. Este método puede devolver otro nodo que se debe reducir a su vez.

(Heredado de Expression)
ReduceAndCheck()

Reduce este nodo a una expresión más simple. Si CanReduce devuelve true, debería devolver una expresión válida. Este método puede devolver otro nodo que se debe reducir a su vez.

(Heredado de Expression)
ReduceExtensions()

Reduce la expresión a un tipo de nodo conocido (no es un nodo de extensión) o, si ya es un tipo conocido, solo devuelve la expresión.

(Heredado de Expression)
ToString()

Devuelve una representación textual de Expression.

(Heredado de Expression)
Update(Expression, IEnumerable<ParameterExpression>)

Crea una nueva expresión que es como esta, pero usa el elemento secundario proporcionado. Si todos los elementos secundarios son iguales, devolverá esta expresión.

VisitChildren(ExpressionVisitor)

Reduce el nodo y, a continuación, llama al delegado del visitante en la expresión reducida. El método inicia una excepción si el nodo no es reducible.

(Heredado de Expression)

Se aplica a

Consulte también