Programmering

Hvordan jobbe med Action-, Func- og Predicate-delegater i C #

En delegat er en typesikker funksjonspeker som kan referere til en metode som har samme signatur som delegatens. Delegater brukes til å definere tilbakeringingsmetoder og implementere håndtering av hendelser, og de blir erklært ved hjelp av "delegat" nøkkelordet. Du kan erklære en delegat som kan vises alene eller til og med nestet i en klasse.

Hva er delegater fra Func og Action? Hvordan kan de brukes?

Den grunnleggende forskjellen mellom Func og Action-delegater er at mens førstnevnte brukes til delegater som returnerer verdi, kan sistnevnte brukes til de delegatene der du ikke har noen returverdi.

Func er en delegat som peker på en metode som godtar ett eller flere argumenter og returnerer en verdi. Handling er en delegat som peker på en metode som igjen aksepterer ett eller flere argumenter, men som ikke gir noen verdi. Med andre ord, bør du bruke handling når delegaten peker på en metode som returnerer ugyldig.

Et predikat er en delegat som godtar en eller flere generiske parametere og returnerer en boolsk verdi - du kan anta at det er noe som Func. Predikatdelegater brukes vanligvis til å utføre søkeoperasjoner på noen data basert på et sett med kriterier.

Programmering av handlingsdelegater i C #

Du kan dra nytte av delegater i C # for å implementere hendelser og tilbakekallingsmetoder. En delegat i C # ligner funksjonspekere på C ++, men C # delegater er typesikre. Du kan sende metoder som parametere til en delegat slik at delegaten kan peke på metoden.

Følgende kodebit illustrerer syntaksen for bruk av handlingsdelegat.

Handling

Følgende kodeliste viser hvordan du kan bruke handlingsdelegert. Denne kodebiten når den ble kjørt, ville skrive ut ordet "Hei !!!" i konsollvinduet.

statisk tomrom Main (streng [] args)

        {

Handlingshandling = ny handling (skjerm);

handling ("Hei !!!");

Console.Read ();

        }

statisk tom visning (strengmelding)

        {

Console.WriteLine (melding);

        }

Programmering Func-delegater i C #

La oss nå forstå hvordan vi kan jobbe med Func-delegater i C #. Her er syntaksen for en Func-delegat.

Func

Følgende kodebit illustrerer hvordan du kan bruke en Func-delegat i C #. Den skriver ut verdien av Hra (beregnet som 40% av grunnlønnen). Grunnlønnen blir gitt til den som et argument.

statisk tomrom Main (streng [] args)

        {

Func func = ny Func (CalculateHra);

Console.WriteLine (func (50000));

Console.Read ();

        }

statisk dobbel CalculateHra (int basic)

        {

retur (dobbelt) (grunnleggende * .4);

        }

Merk at den andre parameteren i erklæringen til Func-delegaten i kodebiten gitt tidligere representerer returtypen til metoden som delegaten vil peke på. I dette eksemplet returneres den beregnede Hra-verdien som dobbelt.

Programmering Forutsi delegater i C #

En predikatdelegat brukes vanligvis til å søke etter elementer i en samling eller et datasett. Her er syntaksen for en representant for predikat.

Predikere

Merk at Predicate i utgangspunktet tilsvarer Func.

Tenk på følgende enhetsklasse som heter Kunde.

klasse Kunden

    {

offentlig int Id {get; sett; }

offentlig streng Fornavn {get; sett; }

offentlig streng Etternavn {get; sett; }

public string Address {get; sett; }

offentlig streng By {get; sett; }

public string State {get; sett; }

offentlig streng Land {get; sett; }

    }

Deretter oppretter du en liste over kunder og lagrer objekter av typen kunde i den.

 List custList = new List ();

custList.Add (ny kunde {Id = 1, FirstName = "Joydip", LastName = "Kanjilal", State = "Telengana", City = "Hyderabad", Address = "Begumpet", Country = "India"});

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

Følgende er den komplette kodelisten som viser hvordan vi kan bruke en predikatdelegat til å søke i data.

statisk tomrom Main (streng [] args)

        {

List custList = new List ();

custList.Add (ny kunde {Id = 1, FirstName = "Joydip", LastName = "Kanjilal", State = "Telengana", City = "Hyderabad", Address = "Begumpet", Country = "India"});

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

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

Kundekunde = custList.Find (hydCustomers);

Console.WriteLine (customer.FirstName);

Console.Read ();

        }

Når kodebiten ovenfor kjøres, vises navnet "Joydip" i konsollvinduet.

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