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
- 继承
- 派生
示例
以下示例演示如何创建一个表达式,该表达式表示使用 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) |