Kako raditi s delegatima Action, Func i Predicate u C #

Delegat je pokazivač funkcije koji je siguran za tip i može se pozivati ​​na metodu koja ima isti potpis kao onaj delegata. Delegati se koriste za definiranje metoda povratnog poziva i implementiranje rukovanja događajima, a deklariraju se pomoću ključne riječi "delegat". Možete proglasiti delegata koji se može pojaviti sam ili čak ugniježđen unutar klase.

Što su delegati Func i Action? Kako se mogu koristiti?

Osnovna razlika između delegata Func i Action je u tome što se, dok se prvi koristi za delegate koji vraćaju vrijednost, drugi može koristiti za one delegate u kojima nemate povratnu vrijednost.

Func je delegat koji upućuje na metodu koja prihvaća jedan ili više argumenata i vraća vrijednost. Akcija je delegat koji upućuje na metodu koja zauzvrat prihvaća jedan ili više argumenata, ali ne vraća vrijednost. Drugim riječima, trebali biste koristiti Action kada vaš delegat usmjeri na metodu koja vraća void.

Predikat je delegat koji prihvaća jedan ili više generičkih parametara i vraća logičku vrijednost - možete pretpostaviti da je nešto poput Func. Delegati predikata obično se koriste za obavljanje operacija pretraživanja nekih podataka na temelju skupa kriterija.

Delegati akcije programiranja u C #

Možete iskoristiti delegate u C # za implementaciju događaja i metode povratnog poziva. Delegat u C # sličan je pokazivačima na funkcije C ++, ali delegati C # su sigurni za tip. Možete proslijediti metode kao parametre delegatu da biste delegatu omogućili da usmjeri na metodu.

Sljedeći isječak koda ilustrira sintaksu korištenja delegata Action.

Akcijski

Sljedeći popis koda pokazuje kako možete koristiti delegat za akciju. Ovaj isječak koda kad bi se izvršio ispisao bi riječ "Zdravo !!!" u prozoru konzole.

statička praznina Main (string [] args)

        {

            Akcija akcije = nova akcija (prikaz);

            akcija ("Pozdrav !!!");

            Console.Read ();

        }

Prikaz statične praznine (niz poruka)

        {

            Console.WriteLine (poruka);

        }

Programiranje funkcijskih delegata u C #

Ajmo sada razumjeti kako možemo raditi s delegatima Funca u C #. Ovdje je sintaksa za delegata Func.

Funk

Sljedeći isječak koda ilustrira kako možete koristiti delegata Func u C #. Ispisuje vrijednost Hra (izračunato kao 40% osnovne plaće). Osnovna plaća prenosi joj se kao argument.

statička praznina Main (string [] args)

        {

            Func func = novi Func (CalculateHra);

            Console.WriteLine (func (50000));

            Console.Read ();

        }

        statički dvostruki CalculateHra (int basic)

        {

            povrat (dvostruki) (osnovni * .4);

        }

Imajte na umu da drugi parametar u deklaraciji Func delegata u ranije datom isječku koda predstavlja povratnu vrstu metode na koju bi delegat upućivao. U ovom se primjeru izračunata vrijednost Hra vraća dvostruko.

Programiranje predikatnih delegata u C #

Delegat predikata obično se koristi za pretraživanje stavki u zbirci ili skupu podataka. Evo sintakse za delegat predikata.

Predikat

Imajte na umu da je predikat u osnovi ekvivalentan funkciji.

Razmotrite sljedeću klasu entiteta pod nazivom Kupac.

klasa Kupac

    {

        javni int Id {get; postavljen; }

        javni niz FirstName {get; postavljen; }

        javni niz LastName {get; postavljen; }

        javni niz Adresa {get; postavljen; }

        javni niz Grad {get; postavljen; }

        javni niz State {get; postavljen; }

        javni niz Country {get; postavljen; }

    }

Zatim stvorite popis kupaca i u njega pohranite objekte tipa Kupac.

 Popis custList = novi Popis ();

            custList.Add (novi kupac {Id = 1, Ime = "Joydip", Prezime = "Kanjilal", Država = "Telengana", Grad = "Hyderabad", Adresa = "Begumpet", Država = "Indija"});

            custList.Add (novi kupac {Id = 2, Ime = "Steve", Prezime = "Jones", Država = "OA", Grad = "New York", Adresa = "Lake Avenue", Država = "US"}) ;

Slijedi cjelovit popis kodova koji pokazuje kako možemo koristiti delegat predikata za pretraživanje podataka.

static void Main(string[] args)

        {

            List custList = new List();

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

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

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

            Customer customer = custList.Find(hydCustomers);

            Console.WriteLine(customer.FirstName);

            Console.Read();

        }

When the above code snippet is executed, the name “Joydip” will be displayed in the console window.

Kako učiniti više u C #:

  • Kada koristiti apstraktnu klasu naspram sučelja u C #
  • Kako raditi s AutoMapperom u C #
  • Kako koristiti lambda izraze u C #
  • Kako raditi s delegatima Action, Func i Predicate u C #
  • Kako raditi s delegatima u C #
  • Kako implementirati jednostavni zapisnik u C #
  • Kako raditi s atributima u C #
  • Kako raditi s log4netom na C #
  • Kako implementirati obrazac dizajna spremišta u C #
  • Kako raditi s refleksijom u C #
  • Kako raditi s nadzornikom datoteka u C #
  • Kako izvesti lijenu inicijalizaciju u C #
  • Kako raditi s MSMQ-om u C #
  • Kako raditi s metodama produženja u C #
  • Kako do nas lambda izrazi u C #
  • Kada upotrijebiti hlapljivu ključnu riječ u C #
  • Kako koristiti ključnu riječ yield u C #
  • Kako implementirati polimorfizam u C #
  • Kako izraditi vlastiti planer zadataka u C #
  • Kako raditi s RabbitMQ u C #
  • Kako raditi s korpicom u C #
  • Istraživanje virtualnih i apstraktnih metoda u C #