LambdaExpression 類別

定義

描述 Lambda 運算式。 這會擷取類似於 .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
繼承
LambdaExpression
衍生

範例

下列範例示範如何建立運算式,代表使用 Lambda 方法將 1 新增至傳遞引數的 Lambda 運算式。

// 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 類型以運算式樹狀結構的形式表示 Lambda 運算式。 衍生 Expression<TDelegate>LambdaExpression 並更明確地擷取 Lambda 運算式類型的類型,也可以用來表示 Lambda 運算式。 在執行時間,代表 Lambda 運算式的運算式樹狀節點一律為 類型 Expression<TDelegate>

NodeType LambdaExpression 屬性值為 Lambda

使用 Factory Lambda 方法來建立 LambdaExpression 物件。

屬性

Body

取得 Lambda 運算式的主體。

CanReduce

表示節點可精簡為更簡單的節點。 如果傳回 true,則可呼叫 Reduce() 以產生精簡的形式。

(繼承來源 Expression)
Name

取得 Lambda 運算式的名稱。

NodeType

傳回這個 Expression 的節點類型。

NodeType

取得這個 Expression 的節點類型。

(繼承來源 Expression)
Parameters

取得 Lambda 運算式的參數。

ReturnType

取得 Lambda 運算式的傳回型別。

TailCall

取得值,這個值表示 Lambda 運算式是否會以 tail 呼叫最佳化來編譯。

Type

取得此 Expression 代表之運算式的靜態類型。

Type

取得此 Expression 代表之運算式的靜態類型。

(繼承來源 Expression)

方法

Accept(ExpressionVisitor)

分派給這個節點類型的特定造訪方法。 例如,MethodCallExpression 會呼叫 VisitMethodCall(MethodCallExpression)

(繼承來源 Expression)
Compile()

產生代表 Lambda 運算式的委派。

Compile(Boolean)

會產生代表 Lambda 運算式的解譯或編譯委派。

Compile(DebugInfoGenerator)

產生代表 Lambda 運算式的委派。

CompileToMethod(MethodBuilder)

將 Lambda 編譯為方法定義。

CompileToMethod(MethodBuilder, DebugInfoGenerator)

將 Lambda 編譯為方法定義和自訂偵錯資訊。

Equals(Object)

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
GetHashCode()

做為預設雜湊函式。

(繼承來源 Object)
GetType()

取得目前執行個體的 Type

(繼承來源 Object)
MemberwiseClone()

建立目前 Object 的淺層複製。

(繼承來源 Object)
Reduce()

將這個節點精簡為更簡單的運算式。 如果 CanReduce 傳回 true,則應該傳回有效的運算式。 這個方法可以傳回其他本身必須精簡的節點。

(繼承來源 Expression)
ReduceAndCheck()

將這個節點精簡為更簡單的運算式。 如果 CanReduce 傳回 true,則應該傳回有效的運算式。 這個方法可以傳回其他本身必須精簡的節點。

(繼承來源 Expression)
ReduceExtensions()

將運算式精簡為已知的節點類型 (不是 Extension 節點),如果已經是已知的類型,則僅傳回運算式。

(繼承來源 Expression)
ToString()

傳回 Expression 的文字表示。

(繼承來源 Expression)
VisitChildren(ExpressionVisitor)

精簡節點,然後呼叫精簡後的運算式上的訪問項委派。 如果節點無法縮減,此方法會擲回例外狀況。

(繼承來源 Expression)

適用於