LambdaExpression 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
描述 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
- 繼承
- 衍生
範例
下列範例示範如何建立表達式,此表達式代表使用 方法將 1 新增至傳遞自變數的 Lambda 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>。
屬性 NodeTypeLambdaExpression 值為 Lambda。
Lambda使用 Factory 方法來建立 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) |