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>

的 属性的 LambdaExpressionLambda值为 NodeType

使用 Lambda 工厂方法创建 LambdaExpression 对象。

属性

Body

获取 lambda 表达式的主体。

CanReduce

指示可将节点简化为更简单的节点。 如果返回 true,则可以调用 Reduce() 以生成简化形式。

(继承自 Expression)
Name

获取 lambda 表达式的名称。

NodeType

返回此 Expression 的节点类型。

NodeType

获取此 Expression 的节点类型。

(继承自 Expression)
Parameters

获取 lambda 表达式的参数。

ReturnType

获取 lambda 表达式的返回类型。

TailCall

获取一个值,该值指示是否将通过尾调用优化来编译 lambda 表达式。

Type

获取此 Expression 表示的表达式的静态类型。

Type

获取此 Expression 表示的表达式的静态类型。

(继承自 Expression)

方法

Accept(ExpressionVisitor)

调度到此节点类型的特定 Visit 方法。 例如,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)

适用于