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 свойства объекта 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) |