Programovanie

Ako pracovať s delegátmi Action, Func a Predicate v C #

Delegát je ukazovateľ bezpečného typu, ktorý môže odkazovať na metódu, ktorá má rovnaký podpis ako delegát. Delegáti sa používajú na definovanie metód spätného volania a implementáciu spracovania udalostí a sú deklarovaní pomocou kľúčového slova „delegát“. Môžete deklarovať delegáta, ktorý sa môže objaviť sám alebo dokonca vnorený do triedy.

Čo sú delegáti Func a Action? Ako sa dajú použiť?

Základný rozdiel medzi delegátmi Func a Action je v tom, že zatiaľ čo prvý sa používa pre delegátov s návratovou hodnotou, druhý sa dá použiť pre tých delegátov, v ktorých nemáte žiadnu návratovú hodnotu.

Func je delegát, ktorý odkazuje na metódu, ktorá prijíma jeden alebo viac argumentov a vracia hodnotu. Akcia je delegát, ktorý odkazuje na metódu, ktorá zase prijíma jeden alebo viac argumentov, ale nevracia žiadnu hodnotu. Inými slovami, Action by ste mali použiť, keď váš delegát odkazuje na metódu, ktorá vracia neplatnosť.

Predikát je delegát, ktorý prijíma jeden alebo viac všeobecných parametrov a vracia boolovskú hodnotu - môžete predpokladať, že ide o niečo ako Func. Delegáti predikátu sa zvyčajne používajú na vykonávanie operácií vyhľadávania niektorých údajov na základe súboru kritérií.

Delegáti programovacej akcie v C #

Môžete využiť výhody delegátov v C # na implementáciu udalostí a metód spätného volania. Delegát v C # je podobný funkčným ukazovateľom v C ++, ale C # delegáti sú typovo bezpeční. Metódy môžete delegovať ako parametre, aby ste delegátovi umožnili smerovať na metódu.

Nasledujúci úryvok kódu ilustruje syntax použitia delegáta akcie.

Akcia

Nasledujúci zoznam kódov ukazuje, ako môžete použiť delegáta akcie. Tento útržok kódu po spustení vytlačí slovo „Hello !!!“ v okne konzoly.

static void Main (reťazec [] args)

        {

Action action = nová akcia (displej);

akcia („Ahoj !!!“);

Console.Read ();

        }

static void Display (reťazcová správa)

        {

Console.WriteLine (správa);

        }

Programovanie delegátov Func v C #

Poďme si teraz uvedomiť, ako môžeme pracovať s delegátmi Func v C #. Tu je syntax delegáta Func.

Func

Nasledujúci úryvok kódu ilustruje, ako môžete použiť delegáta Func v C #. Vytlačí sa hodnota Hra (vypočítaná ako 40% základného platu). Základný plat sa mu odovzdáva ako argument.

static void Main (reťazec [] args)

        {

Func func = nová Func (CalculateHra);

Console.WriteLine (func (50000));

Console.Read ();

        }

statická dvojitá CalculateHra (int basic)

        {

návrat (dvojitý) (základný * .4);

        }

Všimnite si, že druhý parameter v deklarácii delegáta Func v úryvku kódu uvedenom skôr predstavuje návratový typ metódy, na ktorú by delegát ukazoval. V tomto príklade sa vypočítaná hodnota Hra vráti ako dvojnásobok.

Programovanie predikátových delegátov v C #

Delegát Predicate sa zvyčajne používa na vyhľadávanie položiek v zbierke alebo sade údajov. Tu je syntax delegáta Predikátu.

Predikát

Upozorňujeme, že Predicate je v zásade ekvivalentný funkcii Func.

Zvážte nasledujúcu triedu entít s názvom Zákazník.

triedy Zákazník

    {

public int Id {get; sada; }

verejný reťazec FirstName {get; sada; }

verejný reťazec Priezvisko {get; sada; }

public string Adresa {get; sada; }

public string City {get; sada; }

public string State {get; sada; }

public string Country {get; sada; }

    }

Ďalej vytvorte zoznam zákazníkov a uložte do neho objekty typu Customer.

 Zoznam custList = nový Zoznam ();

custList.Add (nový zákazník {Id = 1, meno = "Joydip", priezvisko = "Kanjilal", štát = "Telengana", mesto = "Hyderabad", adresa = "Begumpet", krajina = "India"});

custList.Add (nový zákazník {Id = 2, meno = "Steve", priezvisko = "Jones", štát = "OA", mesto = "New York", adresa = "Lake Avenue", krajina = "US"}) ;

Nasleduje kompletný zoznam kódov, ktorý ukazuje, ako môžeme na vyhľadávanie údajov použiť delegáta Predicate.

static void Main (reťazec [] args)

        {

Zoznam custList = nový Zoznam ();

custList.Add (nový zákazník {Id = 1, krstné meno = "Joydip", priezvisko = "Kanjilal", štát = "Telengana", mesto = "Hyderabad", adresa = "Begumpet", krajina = "India"});

custList.Add (nový zákazník {Id = 2, meno = "Steve", priezvisko = "Jones", štát = "OA", mesto = "New York", adresa = "Lake Avenue", krajina = "US"}) ;

Predikát hydCustomers = x => x.Id == 1;

Zákazník zákazník = custList.Find (hydCustomers);

Console.WriteLine (customer.FirstName);

Console.Read ();

        }

Po vykonaní vyššie uvedeného fragmentu kódu sa v okne konzoly zobrazí názov „Joydip“.

Ako urobiť viac v C #:

  • Kedy použiť abstraktné rozhranie vs. rozhranie v C #
  • Ako pracovať s AutoMapperom v C #
  • Ako používať výrazy lambda v C #
  • Ako pracovať s delegátmi Action, Func a Predicate v C #
  • Ako pracovať s delegátmi v C #
  • Ako implementovať jednoduchý záznamník v C #
  • Ako pracovať s atribútmi v C #
  • Ako pracovať s log4net v C #
  • Ako implementovať vzor návrhu úložiska v C #
  • Ako pracovať s odrazom v C #
  • Ako pracovať so súborovým systémom v C #
  • Ako vykonať lenivú inicializáciu v C #
  • Ako pracovať s MSMQ v C #
  • Ako pracovať s metódami rozšírenia v C #
  • Ako na nás výrazy lambda v C #
  • Kedy použiť volatile kľúčové slovo v C #
  • Ako používať kľúčové slovo výťažku v C #
  • Ako implementovať polymorfizmus v C #
  • Ako zostaviť vlastný plánovač úloh v C #
  • Ako pracovať s RabbitMQ v C #
  • Ako pracovať s n-ticí v C #
  • Skúmanie virtuálnych a abstraktných metód v C #
$config[zx-auto] not found$config[zx-overlay] not found