Как да използвам ламбда изрази в C #

Ламбда изразите бяха въведени за първи път в .NET 3.5, по същото време, когато беше предоставена и езиково интегрирана заявка (LINQ). Ламбда изразите са като анонимни методи, но с много по-голяма гъвкавост. Когато използвате ламбда израз, не е необходимо да указвате вида на входа. Следователно, ламбда израз предоставя по-кратък и по-чист начин за представяне на анонимни методи.

В тази статия ще разгледаме как можем да използваме ламбда изрази в C #. За да работите с примерите за кодове, предоставени в тази статия, трябва да имате Visual Studio 2019 инсталиран във вашата система. Ако все още нямате копие, можете да изтеглите Visual Studio 2019 тук. 

Създайте проект за конзолно приложение в Visual Studio

Първо, нека създадем проект за приложение на конзола .NET Core в Visual Studio. Ако приемем, че Visual Studio 2019 е инсталиран във вашата система, следвайте стъпките, описани по-долу, за да създадете нов проект за приложение на конзола .NET Core в Visual Studio.

  1. Стартирайте Visual Studio IDE.
  2. Кликнете върху „Създаване на нов проект“.
  3. В прозореца „Създаване на нов проект“ изберете „Console App (.NET Core)“ от показания списък с шаблони.
  4. Щракнете върху Напред. 
  5. В показания след това прозорец „Конфигуриране на вашия нов проект“ посочете името и местоположението на новия проект.
  6. Щракнете върху Създаване.

Следването на тези стъпки трябва да доведе до нов проект за приложение на конзола .NET Core в Visual Studio 2019. Ще използваме този проект за работа с C # ламбда изрази в следващите раздели на тази статия.

Анатомия на ламбда израз

По същество ламбда израз е метод, който няма декларация. С други думи, ламбда израз е метод, който няма спецификатор за достъп или име. Ламбда израз може да бъде разделен на два раздела - лявата част и дясната част. Лявата част се използва за въвеждане, а дясната - за писане на изрази.

Ето синтаксиса за използване на ламбда изрази в C #.

(Входни параметри) => Блок на израз или израз

Можете да имате два типа ламбда изрази, ламбда израз и ламбда израз. Изразът ламбда се състои от вход от лявата страна и израз от дясната страна, както е показано по-долу.

вход => израз;

Изразът ламбда се състои от вход от лявата страна и набор от изявления от дясната страна, както е показано по-долу.

вход => {изявления};

Примери за ламбда израз в C #

Писането на ламбда израз е просто - просто трябва да премахнете ключовата дума делегат и типа параметър от анонимен метод. Помислете за следния анонимен метод, който използва ключовата дума делегат, както и тип параметър.

делегат (Автор a) {return a.IsActive && a.NoOfBooksAuthored> 10; }

Горното изявление може да бъде преобразувано в ламбда израз, както е показано в кодовия фрагмент, даден по-долу.

(а) => {a.IsActive && a.NoOfBooksAuthored> 10; }

В горното изявление aе параметърът и =>е ламбда операторът. Следното твърдение е изразът.

a.IsActive && a.NoOfBooksAuthored> 10;

Ето още един пример за ламбда израз, който показва нечетните числа между 1 и 9 в прозореца на конзолата.

Списък на цели числа = нов Списък {1, 2, 3, 4, 5, 6, 7, 8, 9};

foreach (int число в цели числа. Къде (n => n% 2 == 1) .ToList ())

{

  Console.WriteLine (num);

}

Ламбда изрази със и без параметри

Ламбда изразите могат да бъдат без параметри или да имат един или повече параметри. Следният кодов фрагмент илюстрира ламбда израз, който няма никакви параметри.

() => Console.WriteLine ("Това е ламбда израз без никакъв параметър");

Ламбда изразите също могат да имат един или повече параметри. Следният кодов фрагмент илюстрира как можете да предадете един параметър на ламбда израз.

(a, numberOfBooksAuthored) => a.NoOfBooksAuthored> = numberOfBooksAuthored;

Можете също така да посочите типа на параметъра в ламбда израз, както е показано в кодовия фрагмент, даден по-долу.

(a, int numberOfBooksAuthored) => a.NoOfBooksAuthored> = numberOfBooksAuthored;

Можете дори да посочите множество изрази в ламбда израз, като използвате фигурни скоби. Това е показано в следния кодов фрагмент. 

(a, 10) =>

{

   Console.WriteLine ("Това е пример за ламбда израз

                      с множество твърдения ");

   върнете a.NoOfBooksAuthored> = 10;

}

Изявление lambdas в C #

Оператор lambda използва синтаксис, идентичен с израза lambdas. Разликата е, че вместо да има израз вдясно от оператора, операторът ламбда има кодов блок, който включва един или повече изрази.

Следният кодов фрагмент илюстрира как можете да се възползвате от изявление ламбда, за да покажете четните числа между 1 и 9 в прозореца на конзолата.

int [] цели числа = ново [] {1, 2, 3, 4, 5, 6, 7, 8, 9};

foreach (int i в цели числа. Къде (x =>

{

   ако (x% 2 == 0)

         връщане вярно;

    върнете false;

 }

 ))

Console.WriteLine (i);

Ламбда изразите са чудесна функция в .NET и .NET Core, които осигуряват по-кратък начин за представяне на анонимни методи. Ламбда изразите могат да имат нулеви параметри или един или повече. Можете дори да присвоите ламбда изрази на делегата на Func, Action или Predicate. В бъдеща статия тук ще разгледаме тези и други характеристики на ламбда изразите. Също така ще проучим как можем да работим с ламбда изрази и LINQ, както и с асинхронни ламбди.

Как да направите повече в C #:

  • Кога да се използва абстрактен клас срещу интерфейс в C #
  • Как да работя с AutoMapper в C #
  • Как да използвам ламбда изрази в C #
  • Как да работя с Action, Func и Predicate делегати в C #
  • Как да работя с делегати в C #
  • Как да внедрите прост регистратор в C #
  • Как да работя с атрибути в C #
  • Как да работя с log4net в C #
  • Как да приложим шаблона за проектиране на хранилището в C #
  • Как да работя с отражение в C #
  • Как да работя с файлова система за наблюдение в C #
  • Как да извършите мързелива инициализация в C #
  • Как да работите с MSMQ в C #
  • Как да работя с методи за разширение в C #
  • Как да използваме ламбда изрази в C #
  • Кога да се използва летливата ключова дума в C #
  • Как да използвам ключовата дума yield в C #
  • Как да приложим полиморфизъм в C #
  • Как да изградите свой собствен планировчик на задачи в C #
  • Как да работя с RabbitMQ в C #
  • Как да работите с кортеж в C #
  • Проучване на виртуални и абстрактни методи в C #