Un delegat este o clasă care vă permite să stocați o referință la o metodă cu o semnătură specifică (ordine și tipuri de valori acceptate și returnate) a unei clase arbitrare. [1] [2] [3] [4] . Instanțele delegate conțin referințe la metode specifice ale unor clase specifice.
Delegații sunt utilizați, în special, pentru a defini prototipul unei funcții de apel invers , cum ar fi în modelul de eveniment .NET Framework .
Din declarația de tip delegat, compilatorul generează o clasă care derivă din System.MulticastDelegate. Deci, semnătura unei funcții care ia un delegat ca argument ar putea arăta astfel:
public MyFunction ( Delega altă funcție );O caracteristică suplimentară a delegaților este că aceștia pot fi apelați asincron folosind BeginInvoke(). În acest caz, este selectat un pool de fire libere și funcția specificată este executată în paralel în contextul său. Cu toate acestea, este de remarcat faptul că numărul de fire din pool este limitat (sunt 25 în implementarea actuală .NET), iar restul apelurilor își vor aștepta rândul.
Exemplul imprimă pe consolă linia „O funcție a fost apelată cu parametrul hello.”.