Programavimas

Kaip naudoti lambda išraiškas C #

„Lambda“ išraiškos pirmą kartą buvo pristatytos .NET 3.5, tuo pačiu metu, kai buvo prieinama kalbos integruota užklausa (LINQ). Lambda išraiškos yra tarsi anoniminiai metodai, bet kur kas lankstesni. Naudojant lambda išraišką, jums nereikia nurodyti įvesties tipo. Taigi lambda išraiška pateikia trumpesnį ir švaresnį anoniminių metodų vaizdavimo būdą.

Šiame straipsnyje mes apžvelgsime, kaip galime naudoti lambda išraiškas C #. Norėdami dirbti su šiame straipsnyje pateiktais kodų pavyzdžiais, sistemoje turite būti įdiegę „Visual Studio 2019“. Jei dar neturite kopijos, galite atsisiųsti „Visual Studio 2019“ čia.

„Visual Studio“ sukurkite konsolės programos projektą

Pirmiausia sukurkime .NET Core konsolės programos projektą „Visual Studio“. Darant prielaidą, kad „Visual Studio 2019“ yra įdiegta jūsų sistemoje, atlikite toliau nurodytus veiksmus, kad sukurtumėte naują .NET Core konsolės programos projektą „Visual Studio“.

  1. Paleiskite „Visual Studio IDE“.
  2. Spustelėkite „Sukurti naują projektą“.
  3. Lange „Kurti naują projektą“ iš rodomų šablonų sąrašo pasirinkite „Console App (.NET Core)“.
  4. Spustelėkite Pirmyn.
  5. Tada rodomame lange „Konfigūruoti naują projektą“ nurodykite naujo projekto pavadinimą ir vietą.
  6. Spustelėkite Sukurti.

Atlikus šiuos veiksmus, „Visual Studio 2019“ turėtų būti sukurtas naujas .NET Core konsolės programos projektas. Šį projektą naudosime dirbdami su C # lambda išraiškomis tolesniuose šio straipsnio skyriuose.

Lambda išraiškos anatomija

Iš esmės lambda išraiška yra metodas, neturintis deklaracijos. Kitaip tariant, lambda išraiška yra metodas, neturintis prieigos specifikatoriaus ar pavadinimo. Lambda išraišką galima suskirstyti į dvi dalis - kairę ir dešinę. Kairė dalis naudojama įvedant, o dešinė - išraiškoms rašyti.

Čia yra lambda išraiškų C # sintaksė.

(Įvesties parametrai) => Išraiška arba sakinių blokas

Galite turėti dviejų rūšių lambda išraiškas, išraišką lambda ir teiginį lambda. Išraiška lambda susideda iš įvesties kairėje pusėje ir išraiškos dešinėje pusėje, kaip parodyta žemiau.

įvestis => išraiška;

Teiginį „lambda“ sudaro įvestis kairėje pusėje ir teiginių rinkinys dešinėje pusėje, kaip parodyta žemiau.

įvestis => {teiginiai};

Lambda išraiškos pavyzdžiai C #

Parašyti „lambda“ išraišką paprasta - jums tiesiog reikia pašalinti iš anoniminio metodo delegato raktinį žodį ir parametrų tipą. Apsvarstykite šį anoniminį metodą, kuriame naudojamas „delegate“ raktinis žodis ir parametro tipas.

deleguoti (Autorius a) {return a.IsActive && a.NoOfBooksAuthored> 10; }

Pirmiau pateiktą teiginį galima konvertuoti į lambda išraišką, kaip parodyta toliau pateiktame kodo fragmente.

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

Pirmiau pateiktame teiginyje a yra parametras ir => yra lambda operatorius. Šis teiginys yra išraiška.

a.IsActive && a.NoOfBooksAuthored> 10;

Štai dar vienas „lambda“ išraiškos, rodančios nelyginius skaičius nuo 1 iki 9 konsolės lange, pavyzdys.

Sąrašo sveikieji skaičiai = naujas sąrašas {1, 2, 3, 4, 5, 6, 7, 8, 9};

foreach (int skaičius sveikaisiais skaičiais. Kur (n => n% 2 == 1). ToList ())

{

Console.WriteLine (skaičius);

}

Lambda išraiškos su parametrais ir be jų

Lambda išraiškos gali būti be parametrų arba turėti vieną ar daugiau parametrų. Šis kodo fragmentas iliustruoja lambda išraišką, neturinčią jokių parametrų.

() => Console.WriteLine ("Tai yra lambda išraiška be jokio parametro");

Lambda išraiškos taip pat gali turėti vieną ar daugiau parametrų. Šis kodo fragmentas parodo, kaip galite perduoti vieną parametrą „lambda“ išraiškai.

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

Taip pat lambda išraiškoje galite nurodyti parametro tipą, kaip parodyta toliau pateiktame kodo fragmente.

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

Naudodami garbanotas petnešas, lambda išraiškoje galite nurodyti net kelis teiginius. Tai parodyta šiame kodo fragmente.

(a, 10) =>

{

Console.WriteLine ("Tai yra lambda išraiškos pavyzdys

su keliais teiginiais ");

grąžinti a.NoOfBooksAuthored> = 10;

}

Pareiškimas lambdas C #

Teiginyje lambda naudojama sintaksė, identiška išraiškai lambdas. Skirtumas yra tas, kad užuot turėjęs išraišką operatoriaus dešinėje, sakinyje lambda yra kodo blokas, kuriame yra vienas ar keli sakiniai.

Šis kodo fragmentas parodo, kaip galite pasinaudoti teiginiu lambda, kad konsolės lange parodytumėte lyginius skaičius nuo 1 iki 9.

int [] sveiki skaičiai = naujas [] {1, 2, 3, 4, 5, 6, 7, 8, 9};

foreach (int i sveikais skaičiais. Kur (x =>

{

jei (x% 2 == 0)

grįžti tiesa;

grąžinti klaidingą;

 }

 ))

Console.WriteLine (i);

„Lambda“ išraiškos yra puiki „.NET“ ir „.NET Core“ savybė, suteikianti trumpesnį būdą atvaizduoti anoniminius metodus. Lambda išraiškos gali turėti nulį parametrų arba vieną ar daugiau. Jūs netgi galite priskirti „lambda“ išraiškas „Func“, „Action“ arba „Predicate“ delegatams. Čia būsimame straipsnyje mes išnagrinėsime šias ir kitas lambda išraiškų savybes. Mes taip pat ištirsime, kaip mes galime dirbti su lambda išraiškomis ir LINQ, taip pat asinchroniniais lambdas.

Kaip padaryti daugiau C #:

  • Kada naudoti abstrakčią klasę ir sąsają C #
  • Kaip dirbti su „AutoMapper“ C #
  • Kaip naudoti lambda išraiškas C #
  • Kaip dirbti su „Action“, „Func“ ir „Predicate“ delegatais C #
  • Kaip dirbti su delegatais C #
  • Kaip įdiegti paprastą kaupiklį C #
  • Kaip dirbti su atributais C #
  • Kaip dirbti su „Log4net“ C #
  • Kaip įgyvendinti saugyklos dizaino modelį C #
  • Kaip dirbti su atspindžiu C #
  • Kaip dirbti su failų stebėjimo programa C #
  • Kaip atlikti tingų inicializavimą C #
  • Kaip dirbti su MSMQ C #
  • Kaip dirbti su plėtinių metodais C #
  • Kaip mums lambda išraiškos C #
  • Kada naudoti nepastovų raktinį žodį C #
  • Kaip naudoti pajamingumo raktinį žodį C #
  • Kaip įgyvendinti polimorfizmą C #
  • Kaip sukurti savo užduočių planavimo priemonę C #
  • Kaip dirbti su „RabbitMQ“ C #
  • Kaip dirbti su dvigubu C #
  • Naršyti virtualius ir abstrakčius metodus C #
$config[zx-auto] not found$config[zx-overlay] not found