Compartir a través de


Expression<TDelegate>.Compile Método

Definición

Sobrecargas

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(DebugInfoGenerator)

Genera un delegado que representa la expresión lambda.

Compile()

Source:
LambdaExpression.cs
Source:
LambdaExpression.cs
Source:
LambdaExpression.cs

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.

public:
 TDelegate Compile();
public TDelegate Compile ();
override this.Compile : unit -> 'Delegate
Public Function Compile () As TDelegate

Devoluciones

TDelegate

Un delegado de tipo TDelegate que representa la expresión lambda compilada descrita por Expression<TDelegate>.

Ejemplos

En el ejemplo de código siguiente se muestra cómo Compile se usa para ejecutar un árbol de expresión.


// 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> deleg = expr.Compile();
// Invoke the method and print the output.
Console.WriteLine("deleg(4) = {0}", deleg(4));

/*  This code produces the following output:

    deleg(4) = True
*/

' Lambda expression as data in the form of an expression tree.
Dim expression As System.Linq.Expressions.Expression(Of Func(Of Integer, Boolean)) = Function(ByVal i) i < 5
' Compile the expression tree into executable code.
Dim deleg As Func(Of Integer, Boolean) = expression.Compile()
' Invoke the method and print the output.
MsgBox(String.Format("deleg(4) = {0}", deleg(4)))

' This code produces the following output:
'
' deleg(4) = True

Comentarios

El Compile método genera un delegado de tipo TDelegate en tiempo de ejecución. Cuando se ejecuta ese delegado, tiene el comportamiento descrito por la semántica de Expression<TDelegate>.

El Compile método se puede usar para obtener el valor de cualquier árbol de expresión. En primer lugar, cree una expresión lambda que tenga la expresión como cuerpo mediante el Lambda método . A continuación, llame Compile a para obtener un delegado y ejecute el delegado para obtener el valor de la expresión.

Se aplica a

Compile(Boolean)

Source:
LambdaExpression.cs
Source:
LambdaExpression.cs
Source:
LambdaExpression.cs

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.

public:
 TDelegate Compile(bool preferInterpretation);
public TDelegate Compile (bool preferInterpretation);
override this.Compile : bool -> 'Delegate
Public Function Compile (preferInterpretation As Boolean) As TDelegate

Parámetros

preferInterpretation
Boolean

true para indicar que la expresión se debe compilar en un formulario interpretado, si está disponible; false en caso contrario.

Devoluciones

TDelegate

Delegado que representa la expresión lambda compilada descrita por el elemento Expression<TDelegate>.

Se aplica a

Compile(DebugInfoGenerator)

Source:
LambdaExpression.cs
Source:
LambdaExpression.cs
Source:
LambdaExpression.cs

Genera un delegado que representa la expresión lambda.

public:
 TDelegate Compile(System::Runtime::CompilerServices::DebugInfoGenerator ^ debugInfoGenerator);
public TDelegate Compile (System.Runtime.CompilerServices.DebugInfoGenerator debugInfoGenerator);
override this.Compile : System.Runtime.CompilerServices.DebugInfoGenerator -> 'Delegate
Public Function Compile (debugInfoGenerator As DebugInfoGenerator) As TDelegate

Parámetros

debugInfoGenerator
DebugInfoGenerator

Generador de información de depuración usado por el compilador para marcar puntos de secuencia y anotar variables locales.

Devoluciones

TDelegate

Delegado que contiene la versión compilada del lambda.

Se aplica a