Programování

Jak pracovat s delegáty Action, Func a Predicate v C #

Delegát je ukazatel funkce bezpečný pro typ, který může odkazovat na metodu, která má stejný podpis jako delegát. Delegáti se používají k definování metod zpětného volání a implementaci zpracování událostí a jsou deklarováni pomocí klíčového slova „delegate“. Můžete deklarovat delegáta, který se může objevit samostatně nebo dokonce vnořený uvnitř třídy.

Co jsou delegáti Func a Action? Jak je lze použít?

Základní rozdíl mezi delegáty Func a Action spočívá v tom, že zatímco první se používá pro delegáty s návratovou hodnotou, druhý lze použít pro ty delegáty, ve kterých nemáte žádnou návratovou hodnotu.

Func je delegát, který odkazuje na metodu, která přijímá jeden nebo více argumentů a vrací hodnotu. Action je delegát, který ukazuje na metodu, která zase přijímá jeden nebo více argumentů, ale nevrací žádnou hodnotu. Jinými slovy, měli byste použít Action, když váš delegát ukazuje na metodu, která vrací neplatnost.

Predikát je delegát, který přijímá jeden nebo více obecných parametrů a vrací logickou hodnotu - můžete předpokládat, že jde o něco jako Func. Delegáti predikátu se obvykle používají k provádění vyhledávacích operací u některých dat na základě sady kritérií.

Programování delegátů akce v C #

Můžete využít výhod delegátů v C # k implementaci událostí a metod zpětného volání. Delegát v C # je podobný funkčním ukazatelům C ++, ale C # delegáti jsou typově bezpečné. Metody můžete předat delegátovi jako parametry, aby delegát mohl odkazovat na metodu.

Následující fragment kódu ilustruje syntaxi pro použití delegáta akce.

Akce

Následující výpis kódu ukazuje, jak můžete použít delegáta akce. Tento úryvek kódu po spuštění vytiskne slovo „Hello !!!“ v okně konzoly.

static void Main (řetězec [] args)

        {

Akce akce = nová akce (displej);

action ("Hello !!!");

Console.Read ();

        }

static void Display (textová zpráva)

        {

Console.WriteLine (zpráva);

        }

Programování delegátů Func v C #

Pojďme nyní pochopit, jak můžeme pracovat s Func delegáty v C #. Zde je syntaxe delegáta Func.

Func

Následující fragment kódu ukazuje, jak můžete použít delegáta Func v C #. Vytiskne hodnotu Hra (počítáno jako 40% základního platu). Základní plat se mu předává jako argument.

static void Main (řetězec [] args)

        {

Func func = nová Func (CalculateHra);

Console.WriteLine (func (50 000));

Console.Read ();

        }

statický dvojitý CalculateHra (int základní)

        {

návrat (double) (základní * .4);

        }

Všimněte si, že druhý parametr v deklaraci Func delegáta ve fragmentu kódu uvedeném dříve představuje návratový typ metody, na kterou by delegát ukazoval. V tomto příkladu je vypočítaná hodnota Hra vrácena jako dvojnásobek.

Programování predikátových delegátů v C #

Delegát Predikátu se obvykle používá k vyhledávání položek v kolekci nebo v sadě dat. Zde je syntaxe delegáta Predikátu.

Predikát

Všimněte si, že Predicate je v zásadě ekvivalentní Func.

Zvažte následující třídu entit s názvem Zákazník.

třída Zákazník

    {

public int Id {get; soubor; }

public string FirstName {get; soubor; }

veřejný řetězec Příjmení {get; soubor; }

public string Adresa {get; soubor; }

public string City {get; soubor; }

public string State {get; soubor; }

public string Země {get; soubor; }

    }

Dále vytvořte seznam zákazníků a uložte do něj objekty typu Customer.

 List custList = nový List ();

custList.Add (nový zákazník {Id = 1, křestní jméno = "Joydip", příjmení = "Kanjilal", stát = "Telengana", město = "Hyderabad", adresa = "Begumpet", země = "Indie"});

custList.Add (nový zákazník {Id = 2, FirstName = "Steve", LastName = "Jones", State = "OA", City = "New York", adresa = "Lake Avenue", Country = "US"}) ;

Následuje úplný seznam kódů, který ukazuje, jak můžeme k vyhledávání dat použít delegáta Predikátu.

static void Main (řetězec [] args)

        {

List custList = nový List ();

custList.Add (nový zákazník {Id = 1, křestní jméno = "Joydip", příjmení = "Kanjilal", stát = "Telengana", město = "Hyderabad", adresa = "Begumpet", země = "Indie"});

custList.Add (nový zákazník {Id = 2, FirstName = "Steve", LastName = "Jones", State = "OA", City = "New York", adresa = "Lake Avenue", Country = "US"}) ;

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

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

Console.WriteLine (customer.FirstName);

Console.Read ();

        }

Po provedení výše uvedeného fragmentu kódu se v okně konzoly zobrazí název „Joydip“.

Jak udělat více v C #:

  • Kdy použít abstraktní třídu vs. rozhraní v C #
  • Jak pracovat s AutoMapperem v C #
  • Jak používat výrazy lambda v C #
  • Jak pracovat s delegáty Action, Func a Predicate v C #
  • Jak pracovat s delegáty v C #
  • Jak implementovat jednoduchý záznamník v C #
  • Jak pracovat s atributy v C #
  • Jak pracovat s log4net v C #
  • Jak implementovat vzor návrhu úložiště v C #
  • Jak pracovat s odrazem v C #
  • Jak pracovat se souborovým systémem v C #
  • Jak provést línou inicializaci v C #
  • Jak pracovat s MSMQ v C #
  • Jak pracovat s metodami rozšíření v C #
  • Jak na nás lambda výrazy v C #
  • Kdy použít volatilní klíčové slovo v C #
  • Jak používat klíčové slovo výnos v C #
  • Jak implementovat polymorfismus v C #
  • Jak vytvořit svůj vlastní plánovač úloh v C #
  • Jak pracovat s RabbitMQ v C #
  • Jak pracovat s n-ticí v C #
  • Zkoumání virtuálních a abstraktních metod v C #