Expression<TDelegate> クラス

定義

厳密に型指定されたラムダ式を、式ツリー形式のデータ構造体として表します。 このクラスは継承できません。

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

型パラメーター

TDelegate

Expression<TDelegate> を表すデリゲートの型。

継承
Expression<TDelegate>

次のコード例は、ラムダ式をデリゲートの形式で実行可能コードとして表し、式ツリーの形式でデータとして表す方法を示しています。 また、 メソッドを使用して式ツリーを実行可能コードに戻す方法も示 Compile します。


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

注釈

ラムダ式が 型の変数、フィールド、またはパラメーターに割り当てられると、コンパイラは式ツリーを構築する命令 Expression<TDelegate> を出力します。

注意

ラムダ式から型への変換 (Visual Basic) は、ラムダ式から型のデリゲートへの変換が存在する Expression<D> Expression(Of D) 場合に存在 D します。 ただし、ラムダ式の本体がブロックの場合など、変換が失敗する可能性があります。 つまり、デリゲートと式ツリーは、オーバーロードの解決に関して同様に動作します。

式ツリーは、ラムダ式のメモリ内データ表現です。 式ツリーにより、ラムダ式の構造が透過的かつ明示的になります。 式ツリー内のデータは、他のデータ構造と同様に操作できます。

式をデータ構造として扱う機能により、API はカスタムの方法で検査、変換、および処理できる形式でユーザー コードを受け取る可能性があります。 たとえば、LINQ to SQL データ アクセスの実装では、この機能を使用して、式ツリーをデータベースで評価できる Transact-SQL ステートメントに変換します。

クラスで定義されている多くの標準クエリ演算子 Queryable には、 型のパラメーターが 1 つ以上含まれています Expression<TDelegate>

NodeTypeExpression<TDelegate> です Lambda

オブジェクトを Lambda<TDelegate>(Expression, IEnumerable<ParameterExpression>) 作成 Lambda<TDelegate>(Expression, ParameterExpression[]) するには、 メソッドまたは メソッドを使用 Expression<TDelegate> します。

プロパティ

Body

ラムダ式の本体を取得します。

(継承元 LambdaExpression)
CanReduce

ノードをより単純なノードに変形できることを示します。 これが true を返す場合、Reduce() を呼び出して単純化された形式を生成できます。

(継承元 Expression)
Name

ラムダ式の名前を取得します。

(継承元 LambdaExpression)
NodeType

この Expression のノード型を返します。

(継承元 LambdaExpression)
Parameters

ラムダ式のパラメーターを取得します。

(継承元 LambdaExpression)
ReturnType

ラムダ式の戻り値の型を取得します。

(継承元 LambdaExpression)
TailCall

ラムダ式が tail 呼び出し最適化を使用してコンパイルされるかどうかを示す値を取得します。

(継承元 LambdaExpression)
Type

この Expression が表す式の静的な型を取得します。

(継承元 LambdaExpression)

メソッド

Accept(ExpressionVisitor)

このノード型の特定の Visit メソッドにデスパッチします。 たとえば、MethodCallExpressionVisitMethodCall(MethodCallExpression) を呼び出します。

(継承元 Expression)
Compile()

式ツリーによって記述されたラムダ式を実行可能コードにコンパイルし、ラムダ式を表すデリゲートを生成します。

Compile(Boolean)

式ツリーで記述されたラムダ式を、解釈されたまたはコンパイル済みコードにコンパイルし、そのラムダ式を表すデリゲートを生成します。

Compile(Boolean)

ラムダ式を表す、解釈されたまたはコンパイル済みのデリゲートを作成します。

(継承元 LambdaExpression)
Compile(DebugInfoGenerator)

ラムダ式を表すデリゲートを作成します。

Compile(DebugInfoGenerator)

ラムダ式を表すデリゲートを作成します。

(継承元 LambdaExpression)
CompileToMethod(MethodBuilder)

ラムダをメソッド定義にコンパイルします。

(継承元 LambdaExpression)
CompileToMethod(MethodBuilder, DebugInfoGenerator)

ラムダをメソッド定義およびカスタム デバッグ情報にコンパイルします。

(継承元 LambdaExpression)
Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
Reduce()

このノードをより単純な式に変形します。 CanReduce が true を返す場合、これは有効な式を返します。 このメソッドは、それ自体も単純化する必要がある別のノードを返す場合があります。

(継承元 Expression)
ReduceAndCheck()

このノードをより単純な式に変形します。 CanReduce が true を返す場合、これは有効な式を返します。 このメソッドは、それ自体も単純化する必要がある別のノードを返す場合があります。

(継承元 Expression)
ReduceExtensions()

式を既知のノード型 (拡張ノードではない型) に単純化し、それが既に既知の型である場合は単に式を返します。

(継承元 Expression)
ToString()

Expression のテキスト表現を返します。

(継承元 Expression)
Update(Expression, IEnumerable<ParameterExpression>)

これに似た式ですが、指定された子を使用する、新しい式を作成します。 すべての子が同じである場合、この式を返します。

VisitChildren(ExpressionVisitor)

ノードを単純化し、単純化された式の visitor デリゲートを呼び出します。 ノードを単純化できない場合、このメソッドは例外をスローします。

(継承元 Expression)

適用対象

こちらもご覧ください