Delegát je třída , která vám umožňuje uložit odkaz na metodu se specifickým podpisem (pořadí a typy přijatých a návratových hodnot) libovolné třídy. [1] [2] [3] [4] . Instance delegátů obsahují odkazy na konkrétní metody konkrétních tříd.
Delegáti se používají zejména k definování prototypu funkce zpětného volání , jako například v modelu událostí .NET Framework .
Z deklarace typu delegáta kompilátor vygeneruje třídu , která je odvozena z System.MulticastDelegate. Takže podpis funkce , která bere delegáta jako argument, může vypadat takto:
public MyFunction ( Delegovat dalšíFunction );Další funkcí delegátů je, že je lze volat asynchronně pomocí BeginInvoke(). V tomto případě je vybrán volný fond vláken a zadaná funkce se provádí paralelně v jeho kontextu. Je však třeba poznamenat, že počet vláken ve fondu je omezený (v současné implementaci .NET je jich 25) a zbytek hovorů bude čekat, až na ně přijde řada.
Příklad vypíše do konzole řádek "Byla volána funkce s parametrem hello.".