Programmering

Sådan arbejder du med Action-, Func- og Predicate-delegerede i C #

En delegeret er en typesikker funktionsmarkør, der kan henvise til en metode, der har den samme signatur som delegatens. Delegater bruges til at definere tilbagekaldsmetoder og implementere håndtering af begivenheder, og de erklæres ved hjælp af "delegeret" nøgleordet. Du kan erklære en delegeret, der kan vises alene eller endda indlejret i en klasse.

Hvad er Func- og Action-delegerede? Hvordan kan de bruges?

Den grundlæggende forskel mellem Func- og Action-delegerede er, at mens førstnævnte bruges til delegerede, der returnerer værdi, kan sidstnævnte bruges til de delegerede, hvor du ikke har nogen returværdi.

Func er en delegeret, der peger på en metode, der accepterer et eller flere argumenter og returnerer en værdi. Handling er en delegeret, der peger på en metode, som igen accepterer et eller flere argumenter, men ikke returnerer nogen værdi. Med andre ord skal du bruge handling, når din delegat peger på en metode, der returnerer ugyldig.

Et prædikat er en delegeret, der accepterer en eller flere generiske parametre og returnerer en boolsk værdi - du kan antage, at det er noget som Func. Predikatdelegater bruges typisk til at udføre søgefunktioner på nogle data baseret på et sæt kriterier.

Programmering af handlingsdelegater i C #

Du kan drage fordel af delegerede i C # til at implementere begivenheder og tilbagekaldsmetoder. En delegeret i C # svarer til funktionsmarkører for C ++, men C # -delegater er typesikre. Du kan videregive metoder som parametre til en delegeret, så delegaten kan pege på metoden.

Følgende kodestykke illustrerer syntaksen for brug af handlingsdelegeret.

Handling

Følgende kodeliste viser, hvordan du kan bruge handlingsdelegeret. Dette kodestykke, når det blev udført, ville udskrive ordet “Hej !!!” i konsolvinduet.

statisk ugyldigt Main (streng [] args)

        {

Handlingshandling = ny handling (skærm);

handling ("Hej !!!");

Console.Read ();

        }

statisk ugyldigt display (strengmeddelelse)

        {

Console.WriteLine (besked);

        }

Programmering af funk-delegerede i C #

Lad os nu forstå, hvordan vi kan arbejde med Func-delegerede i C #. Her er syntaksen for en Func-delegat.

Funktion

Følgende kodestykke illustrerer, hvordan du kan bruge en Func-delegat i C #. Den udskriver værdien af ​​Hra (beregnet som 40% af grundlønnen). Grundlønnen overføres til den som et argument.

statisk ugyldigt Main (streng [] args)

        {

Funk funk = ny Funk (CalculateHra);

Console.WriteLine (func (50000));

Console.Read ();

        }

statisk dobbelt CalculateHra (int basic)

        {

returnere (dobbelt) (grundlæggende * .4);

        }

Bemærk, at den anden parameter i erklæringen fra Func-delegaten i kodeuddraget, der er givet tidligere, repræsenterer returtypen for den metode, som delegaten ville pege på. I dette eksempel returneres den beregnede Hra-værdi som dobbelt.

Programmering Prædikatdelegater i C #

En predikatdelegeret bruges typisk til at søge på emner i en samling eller et datasæt. Her er syntaksen for en Predicate-delegat.

Prædikat

Bemærk, at Predicate stort set svarer til Func.

Overvej følgende enhedsklasse ved navn Kund.

klasse kunde

    {

public int Id {get; sæt; }

offentlig streng Fornavn {get; sæt; }

public string LastName {get; sæt; }

public string Address {get; sæt; }

offentlig streng By {get; sæt; }

public string State {get; sæt; }

public string Country {get; sæt; }

    }

Opret derefter en liste over kunder og gem objekter af typen kunde i den.

 Liste custList = ny liste ();

custList.Add (ny kunde {Id = 1, FirstName = "Joydip", LastName = "Kanjilal", State = "Telengana", By = "Hyderabad", Adresse = "Begumpet", Land = "Indien"});

custList.Add (ny kunde {Id = 2, FirstName = "Steve", LastName = "Jones", State = "OA", By = "New York", Adresse = "Lake Avenue", Land = "US"}) ;

Følgende er den komplette kodeliste, der viser, hvordan vi kan bruge en Predicate-delegat til at søge data.

statisk ugyldigt Main (streng [] args)

        {

Liste custList = ny liste ();

custList.Add (ny kunde {Id = 1, FirstName = "Joydip", LastName = "Kanjilal", State = "Telengana", By = "Hyderabad", Adresse = "Begumpet", Land = "Indien"});

custList.Add (ny kunde {Id = 2, FirstName = "Steve", LastName = "Jones", State = "OA", By = "New York", Adresse = "Lake Avenue", Land = "US"}) ;

Predikere hydCustomers = x => x.Id == 1;

Kundekunde = custList.Find (hydCustomers);

Console.WriteLine (customer.FirstName);

Console.Read ();

        }

Når ovenstående kodestykke udføres, vises navnet “Joydip” i konsolvinduet.

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 #