System.Linq.Expressions Namespace

System.Linq.Expressions 名前空間には、言語レベルのコード式を式ツリーの形式でオブジェクトとして表せるクラス、インターフェイス、および列挙体が含まれます。 The System.Linq.Expressions namespace contains classes, interfaces and enumerations that enable language-level code expressions to be represented as objects in the form of expression trees.

クラス

BinaryExpression

二項演算子を持つ式を表します。Represents an expression that has a binary operator.

BlockExpression

変数を定義できる式のシーケンスを含んでいるブロックを表します。Represents a block that contains a sequence of expressions where variables can be defined.

CatchBlock

try ブロックの catch ステートメントを表します。Represents a catch statement in a try block.

ConditionalExpression

条件演算子を持つ式を表します。Represents an expression that has a conditional operator.

ConstantExpression

定数値を持つ式を表します。Represents an expression that has a constant value.

DebugInfoExpression

デバッグ情報のシーケンス ポイントを生成またはクリアします。Emits or clears a sequence point for debug information. これにより、デバッガーはデバッグ時に正しいソース コードを強調表示できます。This allows the debugger to highlight the correct source code when debugging.

DefaultExpression

型または空の式の既定値を表します。Represents the default value of a type or an empty expression.

DynamicExpression

動的操作を表します。Represents a dynamic operation.

DynamicExpressionVisitor

動的式ツリーのビジターまたはリライターを表します。Represents a visitor or rewriter for dynamic expression trees.

ElementInit

IEnumerable コレクションの単一要素の初期化子を表します。Represents an initializer for a single element of an IEnumerable collection.

Expression

式ツリー ノードを表すクラスの派生元の基底クラスを提供します。Provides the base class from which the classes that represent expression tree nodes are derived. さまざまなノード型を作成する static (Visual Basic では Shared) ファクトリ メソッドも含まれています。It also contains static (Shared in Visual Basic) factory methods to create the various node types. これは abstract クラスです。This is an abstract class.

Expression<TDelegate>

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

ExpressionVisitor

式ツリーのビジターまたはリライターを表します。Represents a visitor or rewriter for expression trees.

GotoExpression

無条件ジャンプを表します。Represents an unconditional jump. return ステートメント、break と continue ステートメントなど、各種のジャンプがこれに該当します。This includes return statements, break and continue statements, and other jumps.

IndexExpression

プロパティまたは配列のインデックス化を表します。Represents indexing a property or array.

InvocationExpression

引数リストの式にデリゲートまたはラムダ式を適用する式を表します。Represents an expression that applies a delegate or lambda expression to a list of argument expressions.

LabelExpression

Expression の任意のコンテキストに置くことができるラベルを表します。Represents a label, which can be put in any Expression context. ジャンプ ステートメントの結果として、このラベルに制御が到達した場合、このラベルは、対応する GotoExpression の値を受け取ります。If it is jumped to, it will get the value provided by the corresponding GotoExpression. それ以外の場合は、DefaultValue の値が渡されます。Otherwise, it receives the value in DefaultValue. Type が System.Void と等しい場合は、いずれの値も渡されません。If the Type equals System.Void, no value should be provided.

LabelTarget

GotoExpression の移動先を表す目的で使用されます。Used to represent the target of a GotoExpression.

LambdaExpression

ラムダ式を記述します。Describes a lambda expression. .NET メソッド本体に似たコードのブロックをキャプチャします。This captures a block of code that is similar to a .NET method body.

ListInitExpression

コレクション初期化子を持つコンストラクター呼び出しを表します。Represents a constructor call that has a collection initializer.

LoopExpression

無限ループを表します。Represents an infinite loop. これは "break" を使用して抜けることができます。It can be exited with "break".

MemberAssignment

オブジェクトのフィールドまたはプロパティの代入演算を表します。Represents assignment operation for a field or property of an object.

MemberBinding

新しく作成されたオブジェクトのメンバーの初期化に使用されるバインディングを表すクラスが派生する基本クラスを提供します。Provides the base class from which the classes that represent bindings that are used to initialize members of a newly created object derive.

MemberExpression

フィールドまたはプロパティへのアクセスを表します。Represents accessing a field or property.

MemberInitExpression

コンストラクターの呼び出しと、新しいオブジェクトの 1 つまたは複数のメンバーの初期化を表します。Represents calling a constructor and initializing one or more members of the new object.

MemberListBinding

新しく作成されたオブジェクトのコレクション メンバーの要素の初期化を表します。Represents initializing the elements of a collection member of a newly created object.

MemberMemberBinding

新しく作成されたオブジェクトのメンバーの初期化メンバーを表します。Represents initializing members of a member of a newly created object.

MethodCallExpression

静的メソッドまたはインスタンス メソッドへの呼び出しを表します。Represents a call to either static or an instance method.

NewArrayExpression

新しい配列の作成と、場合によっては新しい配列の要素の初期化を表します。Represents creating a new array and possibly initializing the elements of the new array.

NewExpression

コンストラクター呼び出しを表します。Represents a constructor call.

ParameterExpression

名前付きパラメーター式を表します。Represents a named parameter expression.

RuntimeVariablesExpression

変数に対する実行時の読み取り/書き込みアクセス許可を提供する式。An expression that provides runtime read/write permission for variables.

SwitchCase

SwitchExpression の 1 つのケース (case) を表します。Represents one case of a SwitchExpression.

SwitchExpression

SwitchCase に制御を渡すことによって複数の選択内容を処理する制御式を表します。Represents a control expression that handles multiple selections by passing control to SwitchCase.

SymbolDocumentInfo

ソース ファイルのデバッグ シンボル情報を生成するのに必要な情報を格納します (特にファイル名や一意の言語識別子)。Stores information necessary to emit debugging symbol information for a source file, in particular the file name and unique language identifier.

TryExpression

try/catch/finally/fault ブロックを表します。Represents a try/catch/finally/fault block.

TypeBinaryExpression

式と型の間の演算を表します。Represents an operation between an expression and a type.

UnaryExpression

単項演算子を持つ式を表します。Represents an expression that has a unary operator.

インターフェイス

IArgumentProvider

複数のツリー ノード (DynamicExpression、ElementInit、MethodCallExpression、InvocationExpression、NewExpression および IndexExpression) の引数にアクセスするための内部インターフェイスを提供します。Provides an internal interface for accessing the arguments of multiple tree nodes (DynamicExpression, ElementInit, MethodCallExpression, InvocationExpression, NewExpression, and IndexExpression). この API を使用しないでください。You should not use this API. これは、DLL リファクタリングのためパブリックのみで、内部パフォーマンスの最適化のためだけに存在します。It is only public due to DLL refactoring and exists only for internal performance optimizations.

これにより、2 つの最適化を図り、式ツリーのサイズを縮小できます。This enables two optimizations which reduce the size of expression trees. 最初の最適化により、ツリー ノードは ReadOnlyCollection の代わりに IList<T> に保持されます。The first enables the tree nodes to hold onto an IList<T> instead of a ReadOnlyCollection. IList<T> は、各ノードの ReadOnlyCollection の割り当てコストを削減します。IList<T> saves the cost of allocating the ReadOnlyCollection for each node. 2 つ目の最適化により、特定の数の引数 (Block2、Block3、Block4 など) に保持される特殊なサブクラスを作成します。The second enables creating specialized subclasses that hold onto a specific number of arguments (for example, Block2, Block3, Block4). そのため、これらのノードは ReadOnlyCollection およびその要素を格納するための配列の両方の割り当てを回避します。その結果、各ノードにつき 32 バイト節約されます。Therefore, these nodes avoid allocating both a ReadOnlyCollection and an array for storing their elements, saving 32 bytes per node.

式ツリー ノードは引き続き、ReadOnlyCollections のオリジナル LINQ プロパティを公開します。The expression tree nodes continue to expose the original LINQ properties of ReadOnlyCollections. ノードは、配列または配列に通常格納される要素を格納するフィールドを再利用することにより、これを行います。The nodes do this by re-using a field for storing both the array or an element that would normally be stored in the array.

配列の場合、コレクションは ReadOnlyCollection<T> の代わりに IList<T> に型指定されます。For the array case, the collection is typed to IList<T> instead of ReadOnlyCollection<T>. ノードは最初に配列として構築されます。When the node is initially constructed it is an array. コンパイラがメンバーにアクセスするときに、このインターフェイスを使用します。When the compiler accesses the members it uses this interface. 配列要素へアクセスすることにより、配列を ReadOnlyCollection に昇格させます。Accessing array elements promotes the array to a ReadOnlyCollection.

オブジェクトの場合、オブジェクトに型指定されたフィールドに最初の引数を格納します。For the object case we store the first argument in a field typed to object. ノードが最初に構築されるときに、フィールドは式を保持します。When the node is initially constructed, the field holds the Expression. コンパイラは、このインターフェイスから引数にアクセスし、最初の引数のアクセサーはExpression.ReturnObject を使用して、式または ReadOnlyCollection ケースを扱うオブジェクトを返します。The compiler accesses arguments through this interface, and the accessor for the first argument uses Expression.ReturnObject to return the object that handles the Expression or ReadOnlyCollection case. ユーザーが ReadOnlyCollection にアクセスするときに、ReadOnlyCollection に直接格納するためオブジェクト フィールドが更新されます。When the user accesses the ReadOnlyCollection, then the object field is updated to hold directly onto the ReadOnlyCollection.

式が一貫して同じ ReadOnlyCollection を返すことが重要です。It is important that the Expressions consistently return the same ReadOnlyCollection. そうでなければ、リライター ツリー ウォーカーが解除されます。Otherwise, the re-writer tree walker will break. LINQ v1 からの互換性に影響する変更点として、異なる ReadOnlyCollections が、同じ Expression ノードを形成します。It is a breaking change from LINQ v1 to return different ReadOnlyCollections form the same Expression node. 現在ユーザーは、オブジェクト ID を使用してノードが変更されたかどうかを確認できます。Currently users can rely on object identity to tell if the node has changed. ReadOnlyCollection をオーバー ロードされたフィールドに格納すると、メモリ使用を削減し、パブリック API の互換性を維持します。Storing the ReadOnlyCollection in an overloaded field both reduces memory usage and maintains compatibility for the public API.

IDynamicExpression

DynamicExpression ツリー ノードの引数にアクセスするための内部のインターフェイスに加え、CallSite および再書き込み機能も提供します。Provides an internal interface for accessing the arguments of DynamicExpression tree nodes as well as CallSite and Rewriting functionality. この API を使用しないでください。You should not use this API. これは、DLL リファクタリングのためパブリックのみで、内部パフォーマンスの最適化のためだけに存在します。It is only public due to DLL refactoring and exists only for internal performance optimizations.

列挙型

ExpressionType

式ツリー ノードのノード型を記述します。Describes the node types for the nodes of an expression tree.

GotoExpressionKind

この GotoExpression が表すジャンプの種類を指定します。Specifies what kind of jump this GotoExpression represents.

MemberBindingType

MemberInitExpression オブジェクトで使用されるバインディングの型を記述します。Describes the binding types that are used in MemberInitExpression objects.

注釈

抽象クラスExpressionモデル式ツリーに使用されるクラス階層のルートを提供します。The abstract class Expression provides the root of a class hierarchy used to model expression trees.

この名前空間から派生したクラスExpression、たとえばMemberExpressionParameterExpression、式ツリー内のノードを表すために使用します。The classes in this namespace that derive from Expression, for example MemberExpression and ParameterExpression, are used to represent nodes in an expression tree. Expressionクラスに含まれるstatic(Shared Visual basic)、さまざまな種類のツリー ノード式を作成するファクトリ メソッド。The Expression class contains static (Shared in Visual Basic) factory methods to create expression tree nodes of the various types.

列挙型ExpressionType一意のノードの種類を指定します。The enumeration type ExpressionType specifies the unique node types.