#c# #lambda #expression
#c# #лямбда #выражение
Вопрос:
Кто-нибудь может объяснить, в чем смысл expressions<func>
?
Комментарии:
1. Не могли бы вы выразиться немного точнее? Выражения — это тип или какой-то заполнитель? Потому что для меня это выглядит как дженерики.
2. Не могли бы вы предоставить немного больше контекста? Кому-либо будет трудно ответить иначе.
3. Ты имеешь в виду что-то вроде numbers.Sum(w => w * w) ?
4. Вы уверены, что не имеете в виду
Expression<Func>
? Такого класса, какExpressions<Func>
, не существует.
Ответ №1:
Я собираюсь предположить, что вы имеете в виду, Expression<Func>
где Func
находится любая разновидность универсального Func
делегата.
Если это должно быть так, то Expression<Func>
что делается, так это получение дерева выражений лямбда-выражения, которое вы передаете вместо него. Вы найдете это чаще всего в вариантах IQueryable<T>
или во многих fluent интерфейсах.
Деревья выражений используются во время выполнения, чтобы обычно переводить лямбда-выражение в какой-либо другой формат. Например, SQL в случае LINQ с SQL.
Вы можете прочитать больше о Expression
деревьях выражений в .NET
Ответ №2:
Expression trees represent code in a tree-like data structure, where each node is an expression, for example, a method call or a binary operation such as x < y
Вы можете прочитать больше в этой статье.
Ответ №3:
Из MSDN:
Представляет строго типизированное лямбда-выражение в виде структуры данных в виде дерева выражений
Вот реальный пример его использования, который показывает, почему это полезно: http://www.albahari.com/nutshell/predicatebuilder.aspx
Ответ №4:
Возможно, вы захотите начать отсюда
Лямбда-выражение — это анонимная функция, которая может содержать выражения и инструкции и может использоваться для создания делегатов или типов дерева выражений.