Я начинаю программировать на C# 2.0, поэтому я никогда не использовал лямбда-выражения, но почему так много суетится? Являются ли они просто синтаксическим сахаром вокруг анонимных делегатов, или есть что-то большее, чего я не вижу?Почему такая реклама с функциями лямбда C#?
ответ
Ну, лямбда-выражения имеют две основных вещей более анонимные методы:
- Они более краткие, чем анонимные методы
- Они могут быть преобразованы в expression trees, а также делегаты
Если только вы используете деревья выражений, но они очень похожи на анонимные методы. Разница в том, что часто вы можете писать несколько лямбда-выражений в одном из операторов (метод цепочки звонит вместе), не теряя удобочитаемости, но анонимные методы просто слишком многословны.
Кстати, это не так много, что лямбда-выражения являются «просто синтаксическим сахаром вокруг анонимных делегатов», поскольку как лямбда-выражения, так и анонимные методы являются «просто синтаксическим сахаром вокруг создания делегатов (и деревьев выражений)».
Не уклоняйтесь от синтаксического сахара, хотя - преимущества анонимных функций, действующих как закрытие, являются массивными, а также способностью иметь код в том месте, где вы хотите, а не в отдельном методе.
JABTW - моя новая аббревиатура для дня - просто слишком многословная. Идеально подходит для просмотра кода. –
+1 Мммммм ... выражение деревьев. –
Так используются выражения, поэтому агрегаты анонимных методов могут быть свернуты для кода, который выполняет, по существу, и вручную написанные методы? –
Они могут быть легко использованы в качестве синтаксического сахара вокруг делегата, но большая вещь о лямбдах заключается в том, что у компилятора есть возможность превратить их в expression trees, которые открывают множество возможностей (не последним из которых является LINQ).
Хотя это большая вещь с точки зрения LINQ to SQL и т. Д., Я лично использую тот факт, что они работают гораздо чаще, чем я использую деревья выражений ... –
Я тоже - но я думаю, что без деревьев выражений и LINQ C# команда была бы менее склонна добавлять лямбда-выражения к языку для терпения в одиночку :) –
Имея очень краткий синтаксис, более вероятно, что вокруг них будет создано больше вещей. Представьте сложный запрос Linq без какого-либо синтаксического сахара.
Боюсь, что я не делаю Linq. Я застрял в C# 2.0, так что я не могу представить этого. Спасибо, в любом случае. – raven
ли им просто синтаксический сахар вокруг анонимных делегатов, или есть нечто большее, чего я не могу видеть?
Хороший вопрос. Ответ сложный. Во-первых, очевидно, что деревья выражений являются большими. Но есть и тонкости. Вот мои пять многословной и часто отвлекаясь статьи на предмет того, как лямбды несколько отличаются от анонимных методов:
Все мои статьи о проблемах, связанных с лямбда-выражения находятся в архиве здесь:
http://blogs.msdn.com/ericlippert/archive/tags/Lambda+Expressions/default.aspx
- 1. , представляющие множества с лямбда-функциями
- 2. Почему реклама revmob мерцает?
- 3. Карта, которая связывает операторы с лямбда-функциями
- 4. сортировка stl контейнеров с лямбда-функциями
- 5. C# работа с функциями
- 6. Почему реклама AdMob не работает?
- 7. Почему такая разница в содержимом файла C#
- 8. Почему моя карта такая?
- 9. Почему дельта такая крошечная?
- 10. Amazon Реклама продукта C# api
- 11. Записи с функциями C++
- 12. Сложность с функциями - C
- 13. C программирование с функциями
- 14. Haskell: Область переменной при использовании лямбда-выражения с функциями связывания
- 15. C++ Наследование классов с функциями
- 16. обмениваются общими данными между функциями AWS лямбда
- 17. Как сделать словарь с лямбда-функциями с различным количеством параметров
- 18. Почему у меня такая ошибка?
- 19. проблем с перегруженными функциями C++
- 20. Рекурсия с функциями в C++
- 21. Проблемы с функциями в C#
- 22. Реклама с Silverlight
- 23. Баннерная реклама с Xamarin.Forms
- 24. C программирование Массивы с функциями
- 25. Почему у меня такая проблема с RoleProvider?
- 26. Ошибка компиляции C++ с функциями
- 27. Почему реклама Google Maps не отображается?
- 28. Почему моя петля такая медленная?
- 29. словарь постижение с функциями лямбда дает неправильные результаты
- 30. Использование инструкции if в фрейме данных с лямбда-функциями
Новинка является его собственная награда: http://arstechnica.com/old/content/2008/06/mri-study-suggests-novelty -is-its-own-reward.ars – Greg
Да, это дубликат, «в чем цель лямбда» было задано миллион раз.Но я не думаю, что люди, похоже, вообще не думают о дубликатах. –
Да, это дубликат, «в чем цель лямбда», было задано миллион раз. Но я не думаю, что люди, похоже, вообще не думают о дубликатах. –