Expression<TDelegate>.Compile メソッド

定義

オーバーロード

Compile()

式ツリーによって記述されたラムダ式を実行可能コードにコンパイルし、ラムダ式を表すデリゲートを生成します。Compiles the lambda expression described by the expression tree into executable code and produces a delegate that represents the lambda expression.

Compile(Boolean)

式ツリーで記述されたラムダ式を、解釈されたまたはコンパイル済みコードにコンパイルし、そのラムダ式を表すデリゲートを生成します。Compiles the lambda expression described by the expression tree into interpreted or compiled code and produces a delegate that represents the lambda expression.

Compile(DebugInfoGenerator)

ラムダ式を表すデリゲートを作成します。Produces a delegate that represents the lambda expression.

Compile()

式ツリーによって記述されたラムダ式を実行可能コードにコンパイルし、ラムダ式を表すデリゲートを生成します。Compiles the lambda expression described by the expression tree into executable code and produces a delegate that represents the lambda expression.

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

戻り値

TDelegate

Expression<TDelegate> によって記述されたコンパイル済みのラムダ式を表す TDelegate 型のデリゲート。A delegate of type TDelegate that represents the compiled lambda expression described by the Expression<TDelegate>.

次のコード例は、 Compileを使用して式ツリーを実行する方法を示しています。The following code example demonstrates how Compile is used to execute an expression tree.


// 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のデリゲートを生成します。The Compile method produces a delegate of type TDelegate at runtime. デリゲートを実行すると、のExpression<TDelegate>セマンティクスによって記述された動作が実行されます。When that delegate is executed, it has the behavior described by the semantics of the Expression<TDelegate>.

Compileメソッドを使用すると、任意の式ツリーの値を取得できます。The Compile method can be used to obtain the value of any expression tree. 最初に、 Lambdaメソッドを使用して、式を本体とするラムダ式を作成します。First, create a lambda expression that has the expression as its body by using the Lambda method. 次にCompile 、を呼び出してデリゲートを取得し、デリゲートを実行して式の値を取得します。Then call Compile to obtain a delegate, and execute the delegate to obtain the value of the expression.

Compile(Boolean)

式ツリーで記述されたラムダ式を、解釈されたまたはコンパイル済みコードにコンパイルし、そのラムダ式を表すデリゲートを生成します。Compiles the lambda expression described by the expression tree into interpreted or compiled code and produces a delegate that represents the lambda expression.

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 (存在する場合)、それ以外の場合 falsetrue to indicate that the expression should be compiled to an interpreted form, if it is available; false otherwise.

戻り値

TDelegate

Expression<TDelegate> により記述されたコンパイル済みのラムダ式を表すデリゲート。A delegate that represents the compiled lambda expression described by the Expression<TDelegate>.

Compile(DebugInfoGenerator)

ラムダ式を表すデリゲートを作成します。Produces a delegate that represents the lambda expression.

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

パラメーター

debugInfoGenerator
DebugInfoGenerator

シーケンス ポイントをマークしたりローカル変数に注釈を付けたりするためにコンパイラが使用するデバッグ情報ジェネレーター。Debugging information generator used by the compiler to mark sequence points and annotate local variables.

戻り値

TDelegate

コンパイルされたバージョンのラムダを含んでいるデリゲート。A delegate containing the compiled version of the lambda.

適用対象