Programmering

Sådan bruges lambda-udtryk i C #

Lambda-udtryk blev først introduceret i .NET 3.5, samtidig med at Language Integrated Query (LINQ) blev stillet til rådighed. Lambda-udtryk er som anonyme metoder, men med meget mere fleksibilitet. Når du bruger et lambda-udtryk, behøver du ikke angive typen af ​​input. Derfor giver et lambda-udtryk en kortere og renere måde at repræsentere anonyme metoder på.

I denne artikel vil vi se på, hvordan vi kan bruge lambda-udtryk i C #. For at arbejde med kodeeksemplerne i denne artikel skal du have Visual Studio 2019 installeret i dit system. Hvis du ikke allerede har en kopi, kan du downloade Visual Studio 2019 her.

Opret et konsolapplikationsprojekt i Visual Studio

Lad os først oprette et .NET Core-konsolapplikationsprojekt i Visual Studio. Forudsat at Visual Studio 2019 er installeret i dit system, skal du følge nedenstående trin for at oprette et nyt .NET Core-konsolapplikationsprojekt i Visual Studio.

  1. Start Visual Studio IDE.
  2. Klik på "Opret nyt projekt."
  3. I vinduet "Opret nyt projekt" skal du vælge "Konsolapp (.NET Core)" fra listen over skabeloner, der vises.
  4. Klik på Næste.
  5. I vinduet "Konfigurer dit nye projekt", der vises nedenfor, skal du angive navnet og placeringen for det nye projekt.
  6. Klik på Opret.

At følge disse trin skal resultere i et nyt .NET Core-konsolapplikationsprojekt i Visual Studio 2019. Vi bruger dette projekt til at arbejde med C # lambda-udtryk i de efterfølgende afsnit i denne artikel.

Anatomi af et Lambda-udtryk

I det væsentlige er et lambda-udtryk en metode, der ikke har en erklæring. Med andre ord er et lambda-udtryk en metode, der ikke har en adgangsspecifikator eller et navn. Et lambda-udtryk kan opdeles i to sektioner - den venstre del og den højre del. Den venstre del bruges til input, og den højre del bruges til at skrive udtryk.

Her er syntaksen for brug af lambda-udtryk i C #.

(Inputparametre) => Udtryks- eller sætningsblok

Du kan have to typer lambda-udtryk, et udtryk lambda og et udsagn om lambda. Et udtryk lambda består af et input på venstre side og et udtryk på højre side, som vist nedenfor.

input => udtryk;

En udsagn lambda består af et input på venstre side og et sæt udsagn på højre side, som vist nedenfor.

input => {udsagn};

Eksempler på Lambda-udtryk i C #

At skrive et lambda-udtryk er simpelt - du skal bare fjerne delegeret nøgleord og parametertype fra en anonym metode. Overvej følgende anonyme metode, der bruger delegeret nøgleord såvel som en parametertype.

delegeret (Forfatter a) {returner a.IsActive && a.NoOfBooksAuthored> 10; }

Ovenstående udsagn kan konverteres til et lambda-udtryk som vist i nedenstående kodestykke.

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

I ovenstående erklæring -en er parameteren og => er lambda-operatøren. Følgende udsagn er udtrykket.

a.IsActive && a.NoOfBooksAuthored> 10;

Her er et andet eksempel på et lambda-udtryk, der viser de ulige tal mellem 1 og 9 i konsolvinduet.

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

foreach (int num i heltal. hvor (n => n% 2 == 1). ToList ())

{

Console.WriteLine (num);

}

Lambda-udtryk med og uden parametre

Lambda-udtryk kan være parameterløse eller have en eller flere parametre. Følgende kodestykke illustrerer et lambda-udtryk, der ikke har nogen parametre.

() => Console.WriteLine ("Dette er et lambda-udtryk uden nogen parameter");

Lambda-udtryk kan også have en eller flere parametre. Følgende kodestykke illustrerer, hvordan du kan overføre en parameter til et lambda-udtryk.

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

Du kan også angive typen af ​​parameteren i et lambda-udtryk som vist i kodestykket nedenfor.

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

Du kan endda angive flere udsagn i et lambda-udtryk ved hjælp af krøllede seler. Dette vises i følgende kodestykke.

(a, 10) =>

{

Console.WriteLine ("Dette er et eksempel på et lambda-udtryk

med flere udsagn ");

returner a.NoOfBooksAuthored> = 10;

}

Erklæring lambdas i C #

En udsagn lambda bruger en syntaks, der er identisk med udtrykket lambdas. Forskellen er, at i stedet for at have et udtryk til højre for operatøren, har sætningen lambda en kodeblok, der inkluderer en eller flere udsagn.

Følgende kodestykke illustrerer, hvordan du kan drage fordel af en sætning lambda til at vise lige tal mellem 1 og 9 i konsolvinduet.

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

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

{

hvis (x% 2 == 0)

returner sandt;

returner falsk;

 }

 ))

Console.WriteLine (i);

Lambda-udtryk er en fantastisk funktion i .NET og .NET Core, der giver en kortere måde at repræsentere anonyme metoder på. Lambda-udtryk kan have nul parametre eller en eller flere. Du kan endda tildele lambda-udtryk til Func-, Action- eller Predicate-delegerede. I en fremtidig artikel her vil vi undersøge disse og andre funktioner i lambda-udtryk. Vi undersøger også, hvordan vi kan arbejde med lambda-udtryk og LINQ samt asynkroniserede lambdas.

Sådan gør du mere i C #:

  • Hvornår skal man bruge en abstrakt klasse vs. interface i C #
  • Sådan arbejder du med AutoMapper i C #
  • Sådan bruges lambda-udtryk i C #
  • Sådan arbejder du med Action-, Func- og Predicate-delegerede i C #
  • Sådan arbejder du med delegerede i C #
  • Sådan implementeres en simpel logger i C #
  • Sådan arbejder du med attributter i C #
  • Sådan arbejder du med log4net i C #
  • Sådan implementeres depotdesignmønsteret i C #
  • Sådan arbejder du med refleksion i C #
  • Sådan arbejder du med filsystemwatcher i C #
  • Sådan udføres doven initialisering i C #
  • Sådan arbejder du med MSMQ i C #
  • Sådan arbejder du med udvidelsesmetoder i C #
  • Hvordan vi lambda-udtryk i C #
  • Hvornår skal du bruge det flygtige nøgleord i C #
  • Sådan bruges afkastnøgleordet i C #
  • Sådan implementeres polymorfisme i C #
  • Sådan bygger du din egen opgaveplanlægning i C #
  • Sådan arbejder du med RabbitMQ i C #
  • Sådan arbejder du med en tuple i C #
  • Udforskning af virtuelle og abstrakte metoder i C #
$config[zx-auto] not found$config[zx-overlay] not found