Expression<TDelegate> Expression<TDelegate> Expression<TDelegate> Expression<TDelegate> Class

定義

厳密に型指定されたラムダ式を、式ツリー形式のデータ構造体として表します。Represents a strongly typed lambda expression as a data structure in the form of an expression tree. このクラスは継承できません。This class cannot be inherited.

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>を表します。The type of the delegate that the Expression<TDelegate> represents.

継承
Expression<TDelegate>Expression<TDelegate>Expression<TDelegate>Expression<TDelegate>

次のコード例では、デリゲートの形式で実行可能コードと、式ツリーの形式でデータの両方のラムダ式を表す方法を示します。The following code example demonstrates how to represent a lambda expression both as executable code in the form of a delegate and as data in the form of an expression tree. 使用して実行可能コードに戻る式ツリーを変換する方法も示します、Compileメソッド。It also demonstrates how to turn the expression tree back into executable code by using the Compile method.


// 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>コンパイラは式ツリーを構築する手順を生成します。When a lambda expression is assigned to a variable, field, or parameter whose type is Expression<TDelegate>, the compiler emits instructions to build an expression tree.

注意

ラムダ式を型から変換Expression<D>(Expression(Of D) Visual Basic で) 場合、ラムダ式から型のデリゲートへの変換が存在するD存在します。A conversion from a lambda expression to type Expression<D> (Expression(Of D) in Visual Basic) exists if a conversion from the lambda expression to a delegate of type D exists. ただし、変換はエラー、たとえば、ラムダ式の本体は、ブロックです。However, the conversion may fail, for example, if the body of the lambda expression is a block. これは、デリゲート、式ツリーがオーバー ロードの解決に関して同様に動作することを意味します。This means that delegates and expression trees behave similarly with regard to overload resolution.

式ツリーは、ラムダ式のデータをメモリ内表現です。The expression tree is an in-memory data representation of the lambda expression. 式ツリーは、透過的なと明示的なにラムダ式の構造になります。The expression tree makes the structure of the lambda expression transparent and explicit. その他のすべてのデータ構造の場合と同様、式ツリー内のデータを操作できます。You can interact with the data in the expression tree just as you can with any other data structure.

データ構造として式を処理する機能には、Api を検査、変換、およびカスタムの方法で処理できる形式でユーザー コードを受け取ることができます。The ability to treat expressions as data structures enables APIs to receive user code in a format that can be inspected, transformed, and processed in a custom manner. たとえば、LINQ to SQLLINQ to SQLデータ アクセス実装では、この機能を使用して、TRANSACT-SQL ステートメントをデータベースによって評価される式ツリーに変換します。For example, the LINQ to SQLLINQ to SQL data access implementation uses this facility to translate expression trees to Transact-SQL statements that can be evaluated by the database.

多くの標準クエリ演算子で定義されている、Queryableクラスは、型の 1 つまたは複数のパラメーターを持つExpression<TDelegate>します。Many standard query operators defined in the Queryable class have one or more parameters of type Expression<TDelegate>.

NodeTypeExpression<TDelegate>Lambdaします。The NodeType of an Expression<TDelegate> is Lambda.

使用して、Lambda<TDelegate>(Expression, IEnumerable<ParameterExpression>)またはLambda<TDelegate>(Expression, ParameterExpression[])を作成する方法、Expression<TDelegate>オブジェクト。Use the Lambda<TDelegate>(Expression, IEnumerable<ParameterExpression>) or Lambda<TDelegate>(Expression, ParameterExpression[]) method to create an Expression<TDelegate> object.

メソッド

Accept(ExpressionVisitor) Accept(ExpressionVisitor) Accept(ExpressionVisitor) Accept(ExpressionVisitor)

このノード型の特定の Visit メソッドにデスパッチします。Dispatches to the specific visit method for this node type. たとえば、MethodCallExpressionVisitMethodCall(MethodCallExpression) を呼び出します。For example, MethodCallExpression calls the VisitMethodCall(MethodCallExpression).

(Inherited from Expression)
Compile() Compile() 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) Compile(Boolean) Compile(Boolean) 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) Compile(DebugInfoGenerator) Compile(DebugInfoGenerator) Compile(DebugInfoGenerator)

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

CompileToMethod(MethodBuilder) CompileToMethod(MethodBuilder) CompileToMethod(MethodBuilder) CompileToMethod(MethodBuilder)

ラムダをメソッド定義にコンパイルします。Compiles the lambda into a method definition.

(Inherited from LambdaExpression)
CompileToMethod(MethodBuilder, DebugInfoGenerator) CompileToMethod(MethodBuilder, DebugInfoGenerator) CompileToMethod(MethodBuilder, DebugInfoGenerator) CompileToMethod(MethodBuilder, DebugInfoGenerator)

ラムダをメソッド定義およびカスタム デバッグ情報にコンパイルします。Compiles the lambda into a method definition and custom debug information.

(Inherited from LambdaExpression)
Equals(Object) Equals(Object) Equals(Object) Equals(Object)

指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

既定のハッシュ関数として機能します。Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(Inherited from Object)
Reduce() Reduce() Reduce() Reduce()

このノードをより単純な式に変形します。Reduces this node to a simpler expression. CanReduce が true を返す場合、これは有効な式を返します。If CanReduce returns true, this should return a valid expression. このメソッドは、それ自体も単純化する必要がある別のノードを返す場合があります。This method can return another node which itself must be reduced.

(Inherited from Expression)
ReduceAndCheck() ReduceAndCheck() ReduceAndCheck() ReduceAndCheck()

このノードをより単純な式に変形します。Reduces this node to a simpler expression. CanReduce が true を返す場合、これは有効な式を返します。If CanReduce returns true, this should return a valid expression. このメソッドは、それ自体も単純化する必要がある別のノードを返す場合があります。This method can return another node which itself must be reduced.

(Inherited from Expression)
ReduceExtensions() ReduceExtensions() ReduceExtensions() ReduceExtensions()

式を既知のノード型 (拡張ノードではない型) に単純化し、それが既に既知の型である場合は単に式を返します。Reduces the expression to a known node type (that is not an Extension node) or just returns the expression if it is already a known type.

(Inherited from Expression)
ToString() ToString() ToString() ToString()

Expression のテキスト表現を返します。Returns a textual representation of the Expression.

(Inherited from Expression)
Update(Expression, IEnumerable<ParameterExpression>) Update(Expression, IEnumerable<ParameterExpression>) Update(Expression, IEnumerable<ParameterExpression>) Update(Expression, IEnumerable<ParameterExpression>)

これに似た式ですが、指定された子を使用する、新しい式を作成します。Creates a new expression that is like this one, but using the supplied children. すべての子が同じである場合、この式を返します。If all of the children are the same, it will return this expression.

VisitChildren(ExpressionVisitor) VisitChildren(ExpressionVisitor) VisitChildren(ExpressionVisitor) VisitChildren(ExpressionVisitor)

ノードを単純化し、単純化された式の visitor デリゲートを呼び出します。Reduces the node and then calls the visitor delegate on the reduced expression. ノードを単純化できない場合、このメソッドは例外をスローします。The method throws an exception if the node is not reducible.

(Inherited from Expression)

プロパティ

Body Body Body Body

ラムダ式の本体を取得します。Gets the body of the lambda expression.

(Inherited from LambdaExpression)
CanReduce CanReduce CanReduce CanReduce

ノードをより単純なノードに変形できることを示します。Indicates that the node can be reduced to a simpler node. これが true を返す場合、Reduce() を呼び出して単純化された形式を生成できます。If this returns true, Reduce() can be called to produce the reduced form.

(Inherited from Expression)
Name Name Name Name

ラムダ式の名前を取得します。Gets the name of the lambda expression.

(Inherited from LambdaExpression)
NodeType NodeType NodeType NodeType

この Expression のノード型を返します。Returns the node type of this Expression.

(Inherited from LambdaExpression)
Parameters Parameters Parameters Parameters

ラムダ式のパラメーターを取得します。Gets the parameters of the lambda expression.

(Inherited from LambdaExpression)
ReturnType ReturnType ReturnType ReturnType

ラムダ式の戻り値の型を取得します。Gets the return type of the lambda expression.

(Inherited from LambdaExpression)
TailCall TailCall TailCall TailCall

ラムダ式が tail 呼び出し最適化を使用してコンパイルされるかどうかを示す値を取得します。Gets the value that indicates if the lambda expression will be compiled with the tail call optimization.

(Inherited from LambdaExpression)
Type Type Type Type

この Expression が表す式の静的な型を取得します。Gets the static type of the expression that this Expression represents.

(Inherited from LambdaExpression)

適用対象

こちらもご覧ください