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
- Наследование
- Производный
В следующем примере показано, как создать выражение, представляющее лямбда-выражение, которое добавляет 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 |
Возвращает тело лямбда-выражения. |
Can |
Указывает, что узел можно сократить до более простого. Если возвращается значение true, для получения сокращенной формы можно вызвать Reduce(). (Унаследовано от Expression) |
Name |
Получает имя лямбда-выражения. |
Node |
Возвращает тип узла данного Expression. |
Node |
Получает тип узла данного объекта Expression. (Унаследовано от Expression) |
Parameters |
Возвращает параметры лямбда-выражения. |
Return |
Получает возвращаемый тип лямбда-выражения. |
Tail |
Получает значение, которое определяет, можно ли компилировать лямбда-выражение с оптимизацией с помощью вызова с префиксом tail. |
Type |
Получает статичный тип выражения, представленного этим выражением Expression. |
Type |
Получает статичный тип выражения, представленного этим выражением Expression. (Унаследовано от Expression) |
Accept(Expression |
Отправляет в конкретный метод Visit для данного типа узла. Например, объект MethodCallExpression вызывает метод VisitMethodCall(MethodCallExpression). (Унаследовано от Expression) |
Compile() |
Производит делегата, который представляет лямбда-выражение. |
Compile(Boolean) |
Создает интерпретированный или скомпилированный делегат, который представляет лямбда-выражение. |
Compile(Debug |
Производит делегата, который представляет лямбда-выражение. |
Compile |
Компилирует лямбда-выражение в определение метода. |
Compile |
Копирует лямбда-выражение в определение метода и пользовательскую отладочную информацию. |
Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
Get |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
Get |
Возвращает объект Type для текущего экземпляра. (Унаследовано от Object) |
Memberwise |
Создает неполную копию текущего объекта Object. (Унаследовано от Object) |
Reduce() |
Преобразует данный узел в более простое выражение. Если CanReduce возвращает значение true, данный метод должен вернуть допустимое выражение. Данный метод может вернуть другой узел, который нужно будет преобразовать еще раз. (Унаследовано от Expression) |
Reduce |
Преобразует данный узел в более простое выражение. Если CanReduce возвращает значение true, данный метод должен вернуть допустимое выражение. Данный метод может вернуть другой узел, который нужно будет преобразовать еще раз. (Унаследовано от Expression) |
Reduce |
Упрощает выражение до известного типа узла (не являющегося узлом Extension) или возвращает выражение, если оно имеет известный тип. (Унаследовано от Expression) |
To |
Возвращает текстовое представление текущего объекта Expression. (Унаследовано от Expression) |
Visit |
Упрощает узел и вызывает делегат-посетитель для преобразованного выражения. Данный метод создает исключение, если узел невозможно упростить. (Унаследовано от Expression) |
Продукт | Версии |
---|---|
.NET | Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9 |
.NET Framework | 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1 |
.NET Standard | 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1 |
UWP | 10.0 |