LambdaExpression Класс

Определение

Описывает лямбда-выражение.Describes a lambda expression. Оно захватывает блок кода, сходный с телом метода .NET.This captures a block of code that is similar to a .NET method body.

public ref class LambdaExpression abstract : System::Linq::Expressions::Expression
public abstract class LambdaExpression : System.Linq.Expressions.Expression
type LambdaExpression = class
    inherit Expression
Public MustInherit Class LambdaExpression
Inherits Expression
Наследование
LambdaExpression
Производный

Примеры

В следующем примере показано, как создать выражение, представляющее лямбда-выражение, которое добавляет 1 к переданному аргументу Lambda с помощью метода.The following example demonstrates how to create an expression that represents a lambda expression that adds 1 to the passed argument by using the Lambda method.

// 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 Тип представляет лямбда-выражение в форме дерева выражения.The LambdaExpression type represents a lambda expression in the form of an expression tree. Тип, который является производным от LambdaExpression типа и более явно захватывает тип лямбда-выражения, может также использоваться для представления лямбда-выражения. Expression<TDelegate>The Expression<TDelegate> type, which derives from LambdaExpression and captures the type of the lambda expression more explicitly, can also be used to represent a lambda expression. Во время выполнения узел дерева выражения, представляющий лямбда-выражение, всегда имеет тип Expression<TDelegate>.At runtime, an expression tree node that represents a lambda expression is always of type Expression<TDelegate>.

Значение NodeType свойства LambdaExpression объекта равноLambda.The value of the NodeType property of a LambdaExpression is Lambda.

Для создания объекта используйте Lambda LambdaExpression заводские методы.Use the Lambda factory methods to create a LambdaExpression object.

Свойства

Body

Возвращает тело лямбда-выражения.Gets the body of the lambda expression.

CanReduce

Указывает, что узел можно сократить до более простого.Indicates that the node can be reduced to a simpler node. Если возвращается значение true, для получения сокращенной формы можно вызвать Reduce().If this returns true, Reduce() can be called to produce the reduced form.

(Унаследовано от Expression)
Name

Получает имя лямбда-выражения.Gets the name of the lambda expression.

NodeType

Возвращает тип узла данного выражения Expression.Returns the node type of this Expression.

Parameters

Возвращает параметры лямбда-выражения.Gets the parameters of the lambda expression.

ReturnType

Получает возвращаемый тип лямбда-выражения.Gets the return type of the lambda expression.

TailCall

Получает значение, которое определяет, можно ли компилировать лямбда-выражение с оптимизацией с помощью вызова с префиксом tail.Gets the value that indicates if the lambda expression will be compiled with the tail call optimization.

Type

Получает статичный тип выражения, представленного этим выражением Expression.Gets the static type of the expression that this Expression represents.

Методы

Accept(ExpressionVisitor)

Отправляет в конкретный метод Visit для данного типа узла.Dispatches to the specific visit method for this node type. Например, объект MethodCallExpression вызывает метод VisitMethodCall(MethodCallExpression).For example, MethodCallExpression calls the VisitMethodCall(MethodCallExpression).

(Унаследовано от Expression)
Compile()

Производит делегата, который представляет лямбда-выражение.Produces a delegate that represents the lambda expression.

Compile(Boolean)

Создает интерпретированный или скомпилированный делегат, который представляет лямбда-выражение.Produces an interpreted or compiled delegate that represents the lambda expression.

Compile(DebugInfoGenerator)

Производит делегата, который представляет лямбда-выражение.Produces a delegate that represents the lambda expression.

CompileToMethod(MethodBuilder)

Компилирует лямбда-выражение в определение метода.Compiles the lambda into a method definition.

CompileToMethod(MethodBuilder, DebugInfoGenerator)

Копирует лямбда-выражение в определение метода и пользовательскую отладочную информацию.Compiles the lambda into a method definition and custom debug information.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Унаследовано от Object)
GetHashCode()

Служит в качестве хэш-функции по умолчанию.Serves as the default hash function.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Унаследовано от Object)
MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Унаследовано от Object)
Reduce()

Преобразует данный узел в более простое выражение.Reduces this node to a simpler expression. Если CanReduce возвращает значение true, данный метод должен вернуть допустимое выражение.If CanReduce returns true, this should return a valid expression. Данный метод может вернуть другой узел, который нужно будет преобразовать еще раз.This method can return another node which itself must be reduced.

(Унаследовано от Expression)
ReduceAndCheck()

Преобразует данный узел в более простое выражение.Reduces this node to a simpler expression. Если CanReduce возвращает значение true, данный метод должен вернуть допустимое выражение.If CanReduce returns true, this should return a valid expression. Данный метод может вернуть другой узел, который нужно будет преобразовать еще раз.This method can return another node which itself must be reduced.

(Унаследовано от Expression)
ReduceExtensions()

Упрощает выражение до известного типа узла (не являющегося узлом Extension) или возвращает выражение, если оно имеет известный тип.Reduces the expression to a known node type (that is not an Extension node) or just returns the expression if it is already a known type.

(Унаследовано от Expression)
ToString()

Возвращает текстовое представление текущего объекта Expression.Returns a textual representation of the Expression.

(Унаследовано от Expression)
VisitChildren(ExpressionVisitor)

Упрощает узел и вызывает делегат-посетитель для преобразованного выражения.Reduces the node and then calls the visitor delegate on the reduced expression. Данный метод создает исключение, если узел невозможно упростить.The method throws an exception if the node is not reducible.

(Унаследовано от Expression)

Применяется к