Expression<TDelegate> Класс
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Представляет строго типизированное лямбда-выражение как структуру данных в виде дерева выражений. Этот класс не наследуется.
generic <typename TDelegate>
public ref class Expression sealed : System::Linq::Expressions::LambdaExpression
public sealed class Expression<TDelegate> : System.Linq.Expressions.LambdaExpression
type Expression<'Delegate> = class
inherit LambdaExpression
Public NotInheritable Class Expression(Of TDelegate)
Inherits LambdaExpression
- TDelegate
Тип делегата, который представляет Expression<TDelegate>.
- Наследование
В следующем примере кода показано, как представить лямбда-выражение как исполняемый код в виде делегата, так и как данные в виде дерева выражений. Здесь также показано, как преобразовать дерево выражений обратно в исполняемый Compile код с помощью метода .
// Lambda expression as executable code.
Func<int, bool> deleg = i => i < 5;
// Invoke the delegate and display the output.
Console.WriteLine("deleg(4) = {0}", deleg(4));
// Lambda expression as data in the form of an expression tree.
System.Linq.Expressions.Expression<Func<int, bool>> expr = i => i < 5;
// Compile the expression tree into executable code.
Func<int, bool> deleg2 = expr.Compile();
// Invoke the method and print the output.
Console.WriteLine("deleg2(4) = {0}", deleg2(4));
/* This code produces the following output:
deleg(4) = True
deleg2(4) = True
*/
' Lambda expression as executable code.
Dim deleg As Func(Of Integer, Boolean) = Function(ByVal i) i < 5
' Invoke the delegate and display the output.
MsgBox(String.Format("deleg(4) = {0}", deleg(4)))
' Lambda expression as data in the form of an expression tree.
Dim expr As System.Linq.Expressions.Expression(Of Func(Of Integer, Boolean)) = Function(ByVal i) i < 5
' Compile the expression tree into executable code.
Dim deleg2 As Func(Of Integer, Boolean) = expr.Compile()
' Invoke the method and print the output.
MsgBox(String.Format("deleg2(4) = {0}", deleg2(4)))
' This code produces the following output:
'
' deleg(4) = True
' deleg2(4) = True
Когда лямбда-выражение назначается переменной, полю или параметру с типом Expression<TDelegate>, компилятор выдает инструкции для построения дерева выражений.
Примечание
Преобразование лямбда-выражения в тип Expression<D>
(Expression(Of D)
в Visual Basic) существует, если существует преобразование из лямбда-выражения в делегат типа D
. Однако преобразование может завершиться ошибкой, например, если тело лямбда-выражения является блоком. Это означает, что делегаты и деревья выражений ведут себя аналогично в отношении разрешения перегрузки.
Дерево выражений — это представление лямбда-выражения в памяти. Дерево выражений делает структуру лямбда-выражения прозрачной и явной. Вы можете взаимодействовать с данными в дереве выражений так же, как и с любой другой структурой данных.
Возможность обработки выражений как структур данных позволяет API получать пользовательский код в формате, который можно проверять, преобразовывать и обрабатывать пользовательским образом. Например, LINQ to SQL реализации доступа к данным использует эту возможность для преобразования деревьев выражений в инструкции Transact-SQL, которые могут быть оценены базой данных.
Многие стандартные операторы запросов, Queryable определенные в классе , имеют один или несколько параметров типа Expression<TDelegate>.
Для NodeType объекта Expression<TDelegate> имеет значение Lambda.
Lambda<TDelegate>(Expression, IEnumerable<ParameterExpression>) Используйте метод или Lambda<TDelegate>(Expression, ParameterExpression[]) для создания Expression<TDelegate> объекта .
Body |
Возвращает тело лямбда-выражения. (Унаследовано от LambdaExpression) |
Can |
Указывает, что узел можно сократить до более простого. Если возвращается значение true, для получения сокращенной формы можно вызвать Reduce(). (Унаследовано от Expression) |
Name |
Получает имя лямбда-выражения. (Унаследовано от LambdaExpression) |
Node |
Возвращает тип узла данного Expression. (Унаследовано от LambdaExpression) |
Parameters |
Возвращает параметры лямбда-выражения. (Унаследовано от LambdaExpression) |
Return |
Получает возвращаемый тип лямбда-выражения. (Унаследовано от LambdaExpression) |
Tail |
Получает значение, которое определяет, можно ли компилировать лямбда-выражение с оптимизацией с помощью вызова с префиксом tail. (Унаследовано от LambdaExpression) |
Type |
Получает статичный тип выражения, представленного этим выражением Expression. (Унаследовано от LambdaExpression) |
Accept(Expression |
Отправляет в конкретный метод Visit для данного типа узла. Например, объект MethodCallExpression вызывает метод VisitMethodCall(MethodCallExpression). (Унаследовано от Expression) |
Compile() |
Компилирует лямбда-выражение, описанное с помощью дерева выражений в исполняемый код и создает делегат, представляющий лямбда-выражение. |
Compile(Boolean) |
Компилирует лямбда-выражение, описанное с помощью дерева выражений, в интерпретированный или скомпилированный код и создает делегат, представляющий лямбда-выражение. |
Compile(Boolean) |
Создает интерпретированный или скомпилированный делегат, который представляет лямбда-выражение. (Унаследовано от LambdaExpression) |
Compile(Debug |
Производит делегата, который представляет лямбда-выражение. |
Compile(Debug |
Производит делегата, который представляет лямбда-выражение. (Унаследовано от LambdaExpression) |
Compile |
Компилирует лямбда-выражение в определение метода. (Унаследовано от LambdaExpression) |
Compile |
Копирует лямбда-выражение в определение метода и пользовательскую отладочную информацию. (Унаследовано от LambdaExpression) |
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) |
Update(Expression, IEnumerable<Parameter |
Создает новое выражение, аналогичное данному, но с использованием предоставленного дочернего элемента. Если все дочерние элементы совпадают, возвращается данное выражение. |
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 |
Отзыв о .NET
.NET — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв: