LambdaExpression 类 
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
介绍 lambda 表达式。 它捕获一个类似于 .NET 方法主体的代码块。
public ref class LambdaExpression abstract : System::Linq::Expressions::Expressionpublic ref class LambdaExpression : System::Linq::Expressions::Expressionpublic abstract class LambdaExpression : System.Linq.Expressions.Expressionpublic class LambdaExpression : System.Linq.Expressions.Expressiontype LambdaExpression = class
    inherit ExpressionPublic MustInherit Class LambdaExpression
Inherits ExpressionPublic Class LambdaExpression
Inherits Expression- 继承
- 派生
示例
以下示例演示如何创建一个表达式,该表达式表示使用 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) |