@farkhatovich

Преимущество использования Expression вместо Func?

В каких случаях используется Expression> вместо Func<Т> и какое преимущество это дает?
  • Вопрос задан
  • 314 просмотров
Пригласить эксперта
Ответы на вопрос 2
Nipheris
@Nipheris Куратор тега C#
Это совершенно разные вещи.

Func это стандартный тип функтора, который позволяет вам передавать/сохранять некое поведение или вычисления и работать с функией как со значением.

Expression-ы - это не функторы, это синтаксические деревья выражений. Вы можете их скомпилировать в код, чтобы получить функцию, которую можно обернуть в Func, но вы можете воспользовать экспрешенном совершенно иначе, например вывести его содержимое тем или иным образом или вообще скомпилить экспрешн не в код, а например в SQL-запрос, как, ЕМНИП, делает LINQ-to-SQL. Экспрешен - это структура данных, а не функтор, который можно вызвать.

Если непонятно, советую погуглить по "функтор" и "синтаксическое дерево", а также посмотреть примеры на MSDN про компиляцию Expression-ов. Слишком много тут мат. части чтобы в двух предложениях объяснить.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы