Поделиться через


LambdaExpression Класс

Определение

Описывает лямбда-выражение. Это фиксирует блок кода, аналогичный тексту метода .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
Производный

Примеры

В следующем примере показано, как создать выражение, представляющее лямбда-выражение, которое добавляет 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 представляет лямбда-выражение в виде дерева выражений. Тип Expression<TDelegate> , производный от LambdaExpression и фиксирующий тип лямбда-выражения более явно, также можно использовать для представления лямбда-выражения. Во время выполнения узел дерева выражений, представляющий лямбда-выражение, всегда имеет тип Expression<TDelegate>.

Значение NodeType свойства объекта LambdaExpressionLambda.

Используйте методы фабрики LambdaLambdaExpression для создания объекта.

Свойства

Имя Описание
Body

Получает тело лямбда-выражения.

CanReduce

Указывает, что узел может быть сокращен до более простого узла. Если это возвращает значение true, можно вызвать reduce() для создания сокращенной формы.

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

Возвращает имя лямбда-выражения.

NodeType

Возвращает тип узла этого Expressionтипа.

NodeType

Возвращает тип узла данного Expressionобъекта.

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

Возвращает параметры лямбда-выражения.

ReturnType

Возвращает возвращаемый тип лямбда-выражения.

TailCall

Возвращает значение, указывающее, будет ли лямбда-выражение компилироваться с оптимизацией хвостового вызова.

Type

Возвращает статический тип выражения, представляющего это Expression выражение.

Type

Возвращает статический тип выражения, представляющего это Expression выражение.

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

Методы

Имя Описание
Accept(ExpressionVisitor)

Отправляется в конкретный метод посещения для этого типа узла. Например, MethodCallExpression вызывает объект VisitMethodCall(MethodCallExpression).

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

Создает делегат, представляющий лямбда-выражение.

Compile(Boolean)

Создает интерпретированный или скомпилированный делегат, представляющий лямбда-выражение.

Compile(DebugInfoGenerator)

Создает делегат, представляющий лямбда-выражение.

CompileToMethod(MethodBuilder, DebugInfoGenerator)

Компилирует лямбда-код в определение метода и пользовательские сведения отладки.

CompileToMethod(MethodBuilder)

Компилирует лямбда-код в определение метода.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

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

Служит хэш-функцией по умолчанию.

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

Возвращает Type текущего экземпляра.

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

Создает неглубокую копию текущей Object.

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

Сокращает этот узел до более простого выражения. Если CanReduce возвращает значение true, это должно возвращать допустимое выражение. Этот метод может возвращать другой узел, который должен быть сокращен.

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

Сокращает этот узел до более простого выражения. Если CanReduce возвращает значение true, это должно возвращать допустимое выражение. Этот метод может возвращать другой узел, который должен быть сокращен.

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

Уменьшает выражение до известного типа узла (который не является узлом расширения) или просто возвращает выражение, если оно уже известного типа.

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

Возвращает текстовое представление Expressionобъекта .

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

Уменьшает узел, а затем вызывает делегат посетителя в сокращенном выражении. Метод создает исключение, если узел не является редуцируемым.

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

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