次の方法で共有


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>式ツリーを構築する命令を出力します。

注意

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

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

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

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

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)

適用対象

こちらもご覧ください