Выражения?

#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:

Возможно, вы захотите начать отсюда

Лямбда-выражение — это анонимная функция, которая может содержать выражения и инструкции и может использоваться для создания делегатов или типов дерева выражений.