LambdaExpression クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
ラムダ式について説明します。 これにより、.NET メソッド本体に似たコード ブロックがキャプチャされます。
public ref class LambdaExpression abstract : System::Linq::Expressions::Expression
public ref class LambdaExpression : System::Linq::Expressions::Expression
public abstract class LambdaExpression : System.Linq.Expressions.Expression
public class LambdaExpression : System.Linq.Expressions.Expression
type LambdaExpression = class
inherit Expression
Public MustInherit Class LambdaExpression
Inherits Expression
Public Class LambdaExpression
Inherits Expression
- 継承
- 派生
例
次の例では、Lambda メソッドを使用して渡された引数に 1 を追加するラムダ式を表す式を作成する方法を示します。
// Add the following directive to your file:
// using System.Linq.Expressions;
// A parameter for the lambda expression.
ParameterExpression paramExpr = Expression.Parameter(typeof(int), "arg");
// This expression represents a lambda expression
// that adds 1 to the parameter value.
LambdaExpression lambdaExpr = Expression.Lambda(
Expression.Add(
paramExpr,
Expression.Constant(1)
),
new List<ParameterExpression>() { paramExpr }
);
// Print out the expression.
Console.WriteLine(lambdaExpr);
// Compile and run the lamda expression.
// The value of the parameter is 1.
Console.WriteLine(lambdaExpr.Compile().DynamicInvoke(1));
// This code example produces the following output:
//
// arg => (arg +1)
// 2
' Add the following directive to your file:
' Imports System.Linq.Expressions
' A parameter for the lambda expression.
Dim paramExpr As ParameterExpression = Expression.Parameter(GetType(Integer), "arg")
' This expression represents a lambda expression
' that adds 1 to the parameter value.
Dim lambdaExpr As LambdaExpression = Expression.Lambda(
Expression.Add(
paramExpr,
Expression.Constant(1)
),
New List(Of ParameterExpression)() From {paramExpr}
)
' Print out the expression.
Console.WriteLine(lambdaExpr)
' Compile and run the lamda expression.
' The value of the parameter is 1.
Console.WriteLine(lambdaExpr.Compile().DynamicInvoke(1))
' This code example produces the following output:
'
' arg => (arg +1)
' 2
注釈
LambdaExpression 型は、式ツリーの形式でラムダ式を表します。 LambdaExpression から派生し、ラムダ式の型をより明示的にキャプチャする Expression<TDelegate> 型を使用して、ラムダ式を表すこともできます。 実行時に、ラムダ式を表す式ツリー ノードは常に Expression<TDelegate>型です。
LambdaExpression の NodeType プロパティの値が Lambdaです。
Lambda ファクトリ メソッドを使用して、LambdaExpression オブジェクトを作成します。
プロパティ
Body |
ラムダ式の本体を取得します。 |
CanReduce |
ノードを単純なノードに縮小できることを示します。 これが true を返す場合は、Reduce() を呼び出して縮小形式を生成できます。 (継承元 Expression) |
Name |
ラムダ式の名前を取得します。 |
NodeType |
この Expressionのノードの種類を返します。 |
NodeType |
この Expressionのノードの種類を取得します。 (継承元 Expression) |
Parameters |
ラムダ式のパラメーターを取得します。 |
ReturnType |
ラムダ式の戻り値の型を取得します。 |
TailCall |
ラムダ式が末尾呼び出しの最適化でコンパイルされるかどうかを示す値を取得します。 |
Type |
この Expression が表す式の静的な型を取得します。 |
Type |
この Expression が表す式の静的な型を取得します。 (継承元 Expression) |
メソッド
Accept(ExpressionVisitor) |
このノード タイプの特定の visit メソッドにディスパッチします。 たとえば、MethodCallExpression は VisitMethodCall(MethodCallExpression)を呼び出します。 (継承元 Expression) |
Compile() |
ラムダ式を表すデリゲートを生成します。 |
Compile(Boolean) |
ラムダ式を表す解釈されたデリゲートまたはコンパイルされたデリゲートを生成します。 |
Compile(DebugInfoGenerator) |
ラムダ式を表すデリゲートを生成します。 |
CompileToMethod(MethodBuilder, DebugInfoGenerator) |
ラムダをメソッド定義とカスタム デバッグ情報にコンパイルします。 |
CompileToMethod(MethodBuilder) |
ラムダをメソッド定義にコンパイルします。 |
Equals(Object) |
指定したオブジェクトが現在のオブジェクトと等しいかどうかを判断します。 (継承元 Object) |
GetHashCode() |
既定のハッシュ関数として機能します。 (継承元 Object) |
GetType() |
現在のインスタンスの Type を取得します。 (継承元 Object) |
MemberwiseClone() |
現在の Objectの簡易コピーを作成します。 (継承元 Object) |
Reduce() |
このノードを単純な式に減らします。 CanReduce が true を返す場合は、有効な式を返す必要があります。 このメソッドは、それ自体を減らす必要がある別のノードを返すことができます。 (継承元 Expression) |
ReduceAndCheck() |
このノードを単純な式に減らします。 CanReduce が true を返す場合は、有効な式を返す必要があります。 このメソッドは、それ自体を減らす必要がある別のノードを返すことができます。 (継承元 Expression) |
ReduceExtensions() |
式を既知のノード型 (拡張ノードではない) に減らすか、既に既知の型である場合は式を返します。 (継承元 Expression) |
ToString() |
Expressionのテキスト形式を返します。 (継承元 Expression) |
VisitChildren(ExpressionVisitor) |
ノードを減らし、縮小された式でビジター デリゲートを呼び出します。 ノードが縮小できない場合、メソッドは例外をスローします。 (継承元 Expression) |
適用対象
.NET