Programmering

Hvordan bruke lambdauttrykk i C #

Lambda-uttrykk ble først introdusert i .NET 3.5, samtidig som Language Integrated Query (LINQ) ble gjort tilgjengelig. Lambda-uttrykk er som anonyme metoder, men med mye mer fleksibilitet. Når du bruker et lambdauttrykk, trenger du ikke spesifisere typen inngang. Derfor gir et lambdauttrykk en kortere og renere måte å representere anonyme metoder på.

I denne artikkelen vil vi se på hvordan vi kan bruke lambdauttrykk i C #. For å jobbe med kodeeksemplene som er gitt i denne artikkelen, bør du ha Visual Studio 2019 installert på systemet ditt. Hvis du ikke allerede har en kopi, kan du laste ned Visual Studio 2019 her.

Opprett et konsollapplikasjonsprosjekt i Visual Studio

La oss først lage et .NET Core-konsollapplikasjonsprosjekt i Visual Studio. Forutsatt at Visual Studio 2019 er installert i systemet ditt, følger du trinnene som er beskrevet nedenfor for å opprette et nytt .NET Core-konsollapplikasjonsprosjekt i Visual Studio.

  1. Start Visual Studio IDE.
  2. Klikk på "Opprett nytt prosjekt."
  3. I vinduet "Opprett nytt prosjekt" velger du "Konsollapp (.NET Core)" fra listen over maler som vises.
  4. Klikk på Neste.
  5. I vinduet “Konfigurer ditt nye prosjekt” som vises, angir du navnet og stedet for det nye prosjektet.
  6. Klikk på Opprett.

Å følge disse trinnene skal resultere i et nytt .NET Core-konsollapplikasjonsprosjekt i Visual Studio 2019. Vi bruker dette prosjektet til å jobbe med C # lambda-uttrykk i de påfølgende delene av denne artikkelen.

Anatomi av et Lambda-uttrykk

I hovedsak er et lambdauttrykk en metode som ikke har en erklæring. Et lambdauttrykk er med andre ord en metode som ikke har tilgangsspesifikator eller navn. Et lambdauttrykk kan deles inn i to seksjoner - venstre del og høyre del. Den venstre delen brukes til innspill, og den høyre delen brukes til å skrive uttrykk.

Her er syntaksen for bruk av lambdauttrykk i C #.

(Inndataparametere) => Uttrykk eller setningsblokk

Du kan ha to typer lambdauttrykk, et uttrykk lambda og et utsagn lambda. Et uttrykk lambda består av en inngang på venstre side og et uttrykk på høyre side, som vist nedenfor.

input => uttrykk;

En uttalelse lambda består av en inngang på venstre side og et sett med utsagn på høyre side, som vist nedenfor.

input => {uttalelser};

Eksempler på Lambda-uttrykk i C #

Å skrive et lambdauttrykk er enkelt - du trenger bare å fjerne delegatens nøkkelord og parametertype fra en anonym metode. Tenk på den følgende anonyme metoden som bruker delegert nøkkelord i tillegg til en parametertype.

delegat (Forfatter a) {return a.IsActive && a.NoOfBooksAuthored> 10; }

Uttalelsen ovenfor kan konverteres til et lambdauttrykk som vist i kodebiten gitt nedenfor.

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

I ovenstående uttalelse en er parameteren og => er lambda-operatøren. Følgende uttalelse er uttrykket.

a.IsActive && a.NoOfBooksAuthored> 10;

Her er et annet eksempel på et lambdauttrykk som viser oddetallene mellom 1 og 9 i konsollvinduet.

Liste heltall = ny liste {1, 2, 3, 4, 5, 6, 7, 8, 9};

foreach (int num i heltall. Hvor (n => n% 2 == 1). ToList ())

{

Console.WriteLine (num);

}

Lambda-uttrykk med og uten parametere

Lambda-uttrykk kan være parameterløse eller ha en eller flere parametere. Følgende kodebit illustrerer et lambdauttrykk som ikke har noen parametere.

() => Console.WriteLine ("Dette er et lambdauttrykk uten noen parameter");

Lambda-uttrykk kan også ha en eller flere parametere. Følgende kodebit illustrerer hvordan du kan overføre en parameter til et lambdauttrykk.

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

Du kan også spesifisere parametertypen i et lambdauttrykk, som vist i kodebiten gitt nedenfor.

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

Du kan til og med spesifisere flere utsagn i et lambdauttrykk ved hjelp av krøllete bukseseler. Dette vises i følgende kodebit.

(a, 10) =>

{

Console.WriteLine ("Dette er et eksempel på et lambdauttrykk

med flere uttalelser ");

returner a.NoOfBooksAuthored> = 10;

}

Uttalelse lambdas i C #

En uttalelse lambda bruker en syntaks som er identisk med uttrykket lambdas. Forskjellen er at, i stedet for å ha et uttrykk til høyre for operatøren, har setningen lambda en kodeblokk som inkluderer ett eller flere utsagn.

Følgende kodebit illustrerer hvordan du kan dra nytte av en setning lambda for å vise partallene mellom 1 og 9 i konsollvinduet.

int [] heltall = nytt [] {1, 2, 3, 4, 5, 6, 7, 8, 9};

foreach (int i i heltall. hvor (x =>

{

hvis (x% 2 == 0)

returner sant;

returner falsk;

 }

 ))

Console.WriteLine (i);

Lambda-uttrykk er en flott funksjon i .NET og .NET Core som gir en kortere måte å representere anonyme metoder på. Lambda-uttrykk kan ha null parametere eller en eller flere. Du kan til og med tildele lambdauttrykk til Func, Action eller Predicate delegater. I en fremtidig artikkel her vil vi utforske disse og andre funksjonene i lambdauttrykk. Vi vil også undersøke hvordan vi kan jobbe med lambdauttrykk og LINQ samt asynkroniserte lambdas.

Hvordan gjøre mer i C #:

  • Når skal jeg bruke en abstrakt klasse vs. grensesnitt i C #
  • Hvordan jobbe med AutoMapper i C #
  • Hvordan bruke lambdauttrykk i C #
  • Hvordan jobbe med Action-, Func- og Predicate-delegater i C #
  • Hvordan jobbe med delegater i C #
  • Slik implementerer du en enkel logger i C #
  • Hvordan jobbe med attributter i C #
  • Hvordan jobbe med log4net i C #
  • Slik implementerer du mønsteret for depotdesign i C #
  • Hvordan jobbe med refleksjon i C #
  • Hvordan jobbe med filsystemwatcher i C #
  • Hvordan utføre lat initialisering i C #
  • Hvordan jobbe med MSMQ i C #
  • Hvordan jobbe med utvidelsesmetoder i C #
  • Hvordan vi lambdauttrykk i C #
  • Når skal du bruke det flyktige nøkkelordet i C #
  • Slik bruker du avkastningsnøkkelordet i C #
  • Hvordan implementere polymorfisme i C #
  • Hvordan lage din egen oppgaveplanlegger i C #
  • Hvordan jobbe med RabbitMQ i C #
  • Hvordan jobbe med en tuple i C #
  • Utforske virtuelle og abstrakte metoder i C #
$config[zx-auto] not found$config[zx-overlay] not found