Сведения о вопросе

LARVION

01:53, 23rd August, 2020

Теги

c#   lambda    

Что такое appliance и как использовать выражения lambda?

Просмотров: 414   Ответов: 3

Я читал, что выражения Lambda являются невероятно мощным дополнением к C#,, но я нахожу себя озадаченным ими. Как они могут улучшить мою жизнь или сделать мой код лучше? Может ли кто-нибудь указать на хороший ресурс для изучения таких выражений?

Они кажутся чертовски крутыми, но как они связаны с моей жизнью day-to-day в качестве разработчика asp.net?

Edit: Спасибо за примеры и спасибо за ссылку на статьи Эрика Уайта. Я все еще перевариваю их сейчас. Один быстрый вопрос: Являются ли выражения lambda полезными для чего-либо, кроме запроса? Каждый пример, который я видел, был конструкцией запроса.



  Сведения об ответе

davran

17:34, 21st August, 2020

: являются ли выражения lambda полезными для чего-либо, кроме запроса

Выражения Ламба - это не что иное, как удобный способ написания функции 'in-line'.

Таким образом, они полезны в любом месте, где вы хотите немного кода, который может быть вызван, как будто это отдельная функция, но который на самом деле написан внутри своего вызывающего объекта. (В дополнение к хранению связанного кода в одном и том же месте в файле, это также позволяет вам играть в забавные игры с переменной областью действия - см. 'closures' для справки.)

Примером использования non-query-related lamba может быть бит кода, который делает что-то асинхронно, что вы начинаете с ThreadPool.QueueUserWorkItem. Важным моментом является то, что вы также можете написать это с помощью анонимных делегатов (которые были C#2 введением) или просто отдельной функции-члена класса.

Это http://blogs.msdn.com/jomo_fisher/archive/2005/09/13/464884.aspx -превосходное step-by-step Введение во все эти вещи, которое может вам помочь.


  Сведения об ответе

park

21:07, 14th August, 2020

Лямбды приводят функциональное программирование к C#. Это анонимные функции, которые могут передаваться в качестве значений некоторым другим функциям. Больше всего используется в LINQ.

Вот надуманный пример:

List<int> myInts = GetAll();
IEnumerable<int> evenNumbers = myInts.Where(x => x % 2 == 0);

Теперь, когда вы foreach через evenNumbers ламда

x=> x % 2 == 0

затем применяется в качестве фильтра к myInts.

Они становятся действительно полезными для повышения читаемости сложных алгоритмов, которые будут иметь много вложенных условных обозначений IF и циклов.


  Сведения об ответе

FAriza

00:46, 15th August, 2020

Вот простой пример того, что вы можете сделать с лямбдами:

List<int> myList = new List<int>{ 1, 2, 3, 4, 5, 6, 7, 8, 9 };
myList.RemoveAll(x => x > 5);
//myList now == {1,2,3,4,5}

Метод RemoveAll принимает предикат (делегат, который принимает аргументы и возвращает bool), все, что соответствует ему, удаляется. Использование выражения lambda делает его проще, чем фактическое объявление предиката.


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться