Поделиться через


Expression<TDelegate>.Compile Метод

Определение

Перегрузки

Compile()

Компилирует лямбда-выражение, описанное с помощью дерева выражений в исполняемый код и создает делегат, представляющий лямбда-выражение.

Compile(Boolean)

Компилирует лямбда-выражение, описанное с помощью дерева выражений, в интерпретированный или скомпилированный код и создает делегат, представляющий лямбда-выражение.

Compile(DebugInfoGenerator)

Производит делегата, который представляет лямбда-выражение.

Compile()

Исходный код:
LambdaExpression.cs
Исходный код:
LambdaExpression.cs
Исходный код:
LambdaExpression.cs

Компилирует лямбда-выражение, описанное с помощью дерева выражений в исполняемый код и создает делегат, представляющий лямбда-выражение.

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

Возвращаемое значение

TDelegate

Делегат типа TDelegate, который представляет скомпилированное лямбда-выражение, описанное с помощью Expression<TDelegate>.

Примеры

В следующем примере кода показано, как Compile используется для выполнения дерева выражений.


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

Комментарии

Метод Compile создает делегат типа TDelegate во время выполнения. При выполнении этого делегата он имеет поведение, описанное семантикой Expression<TDelegate>.

Метод Compile можно использовать для получения значения любого дерева выражений. Сначала создайте лямбда-выражение с выражением в качестве тела с помощью Lambda метода . Затем вызовите Compile , чтобы получить делегат, и выполните делегат, чтобы получить значение выражения.

Применяется к

Compile(Boolean)

Исходный код:
LambdaExpression.cs
Исходный код:
LambdaExpression.cs
Исходный код:
LambdaExpression.cs

Компилирует лямбда-выражение, описанное с помощью дерева выражений, в интерпретированный или скомпилированный код и создает делегат, представляющий лямбда-выражение.

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

Параметры

preferInterpretation
Boolean

true, чтобы указать, что выражение должно быть скомпилировано в интерпретированную форму, если она доступна; в противном случае — false.

Возвращаемое значение

TDelegate

Делегат, представляющий скомпилированное лямбда-выражение, описанное Expression<TDelegate>.

Применяется к

Compile(DebugInfoGenerator)

Исходный код:
LambdaExpression.cs
Исходный код:
LambdaExpression.cs
Исходный код:
LambdaExpression.cs

Производит делегата, который представляет лямбда-выражение.

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

Параметры

debugInfoGenerator
DebugInfoGenerator

Генератор отладочной информации, используемый компилятором для пометки точек следования и создания заметок для локальных переменных.

Возвращаемое значение

TDelegate

Делегат, содержащий скомпилированную версию лямбда-выражения.

Применяется к