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


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 свойства объекта LambdaExpression равно Lambda.

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

Свойства

Body

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

CanReduce

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

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

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

NodeType

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

NodeType

Получает тип узла данного объекта Expression.

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

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

ReturnType

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

TailCall

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

Type

Получает статичный тип выражения, представленного этим выражением Expression.

Type

Получает статичный тип выражения, представленного этим выражением Expression.

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

Методы

Accept(ExpressionVisitor)

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

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

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

Compile(Boolean)

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

Compile(DebugInfoGenerator)

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

CompileToMethod(MethodBuilder)

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

CompileToMethod(MethodBuilder, DebugInfoGenerator)

Копирует лямбда-выражение в определение метода и пользовательскую отладочную информацию.

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)

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