Programiranje

Kako delati z delegati Action, Func in Predicate v C #

Delegat je kazalnik funkcije, varen za tip, ki se lahko sklicuje na metodo, ki ima enak podpis kot delegat. Delegati se uporabljajo za opredelitev načinov povratnega klica in izvajanje obdelave dogodkov, pri čemer so navedeni z uporabo ključne besede “delegat”. Lahko prijavite delegata, ki se lahko pojavi sam ali celo ugnezden v razredu.

Kaj so poslanci Func in Action? Kako jih je mogoče uporabiti?

Osnovna razlika med funkcijskimi in akcijskimi delegati je, da medtem ko se prvi uporablja za delegate, ki vrnejo vrednost, se drugi lahko uporabljajo za delegate, pri katerih nimate nobene vrnjene vrednosti.

Func je delegat, ki kaže na metodo, ki sprejme enega ali več argumentov in vrne vrednost. Action je delegat, ki kaže na metodo, ki nato sprejme enega ali več argumentov, vendar ne vrne vrednosti. Z drugimi besedami, uporabite Action, ko pooblaščenec kaže na metodo, ki vrne void.

Predikat je delegat, ki sprejme enega ali več splošnih parametrov in vrne logično vrednost - lahko domnevate, da gre za nekaj podobnega Func. Delegati predikatov se običajno uporabljajo za izvajanje iskalnih operacij nekaterih podatkov na podlagi nabora meril.

Delegati programa za programiranje v jeziku C #

Delegate v C # lahko izkoristite za izvajanje dogodkov in metode povratnega klica. Delegat v C # je podoben kazalcem funkcije v C ++, vendar so delegati C # varni za tip. Metode lahko posredujete kot parametre pooblaščencu, da omogočite, da delegat kaže na metodo.

Naslednji delček kode ponazarja sintakso za uporabo pooblaščenca Action.

Akcija

Naslednji seznam kod prikazuje, kako lahko uporabite pooblastilo Action. Ta delček kode bi ob izvedbi natisnil besedo "Pozdravljeni !!!" v oknu konzole.

statična praznina Main (string [] args)

        {

Dejanje dejanja = novo dejanje (prikaz);

akcija ("Pozdravljeni !!!");

Console.Read ();

        }

prikaz statične praznine (niz sporočila)

        {

Console.WriteLine (sporočilo);

        }

Programiranje funkcijskih delegatov v jeziku C #

Zdaj pa razumejmo, kako lahko sodelujemo s funkcijskimi delegati v C #. Tu je sintaksa za pooblaščenca Func.

Func

Naslednji delček kode ponazarja, kako lahko v C # uporabite pooblaščenca Func. Natisne vrednost Hra (izračunana kot 40% osnovne plače). Osnovna plača mu se posreduje kot argument.

statična praznina Main (string [] args)

        {

Func func = nov Func (CalculateHra);

Console.WriteLine (func (50000));

Console.Read ();

        }

statični dvojni CalculateHra (int basic)

        {

vrnitev (dvojno) (osnovno * .4);

        }

Upoštevajte, da drugi parameter v izjavi delega Func v delčku kode, ki je bil dan prej, predstavlja vrsto vrnitve metode, na katero bi delegat kazal. V tem primeru se izračunana vrednost Hra vrne kot dvojna.

Programiranje predikatnih delegatov v jeziku C #

Delegat predikata se običajno uporablja za iskanje elementov v zbirki ali naboru podatkov. Tu je sintaksa za delegat predikata.

Predikat

Upoštevajte, da je Predicate v osnovi enakovreden Func.

Razmislite o naslednjem razredu entitete z imenom Customer.

razred Stranka

    {

public int Id {get; set; }

javni niz FirstName {get; set; }

javni niz LastName {get; set; }

javni niz Naslov {get; set; }

javni niz Mesto {get; set; }

javni niz države {get; set; }

javni niz Država {get; set; }

    }

Nato ustvarite seznam strank in vanj shranite predmete vrste Customer.

 Seznam custList = nov seznam ();

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

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

Sledi celoten seznam kod, ki prikazuje, kako lahko uporabimo delegat Predicate za iskanje podatkov.

statična praznina Main (string [] args)

        {

Seznam custList = nov seznam ();

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

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

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

Stranka kupec = custList.Find (hydCustomers);

Console.WriteLine (customer.FirstName);

Console.Read ();

        }

Ko se izvede zgornji delček kode, se v oknu konzole prikaže ime »Joydip«.

Kako narediti več v jeziku C #:

  • Kdaj uporabiti abstraktni razred v primerjavi z vmesnikom v jeziku C #
  • Kako delati z AutoMapper v C #
  • Kako uporabljati lambda izraze v jeziku C #
  • Kako delati z delegati Action, Func in Predicate v C #
  • Kako delati z delegati v C #
  • Kako implementirati preprost zapisovalnik v jeziku C #
  • Kako delati z atributi v jeziku C #
  • Kako delati z log4net v C #
  • Kako implementirati vzorec oblikovanja repozitorija v C #
  • Kako delati z refleksijo v jeziku C #
  • Kako delati z nadzornikom datotek v C #
  • Kako izvesti leno inicializacijo v C #
  • Kako delati z MSMQ v C #
  • Kako delati z razširitvenimi metodami v jeziku C #
  • Kako do lambda izrazov v jeziku C #
  • Kdaj uporabiti hlapljivo ključno besedo v jeziku C #
  • Kako uporabiti ključno besedo yield v jeziku C #
  • Kako uporabiti polimorfizem v jeziku C #
  • Kako zgraditi lasten načrtovalnik opravil v C #
  • Kako delati z RabbitMQ v C #
  • Kako delati s korpico v jeziku C #
  • Raziskovanje virtualnih in abstraktnih metod v jeziku C #
$config[zx-auto] not found$config[zx-overlay] not found