Delegat (programare)

Un  delegat este o clasă care 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 .

Delegați în C#

Descriere

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.

Un exemplu de declarare și utilizare a unui delegat

folosind System ; // Declarație delegat delegat void MyDelegate ( șir a ); class DelegateExample { static void Func ( string param ) { Consola . WriteLine ( "Funcția apelată cu parametrul {0}." , param ); } public static void Main () { // Instanțiază MyDelegate delegat f = new MyDelegate ( Func ); // Apelați funcția f ( "bună ziua" ); } }

Exemplul imprimă pe consolă linia „O funcție a fost apelată cu parametrul hello.”.

Note

  1. Delegates (A Guide to C# Programming) Arhivat 6 septembrie 2011 pe pagina Wayback Machine ” din MSDN Library
  2. Delegat - clasă Arhivat 6 septembrie 2011 la Wayback Machine ” din MSDN Library
  3. MulticastDelegate - Class arhivat 24 decembrie 2011 la Wayback Machine ” din MSDN Library
  4. Delegați și evenimente Arhivat 17 august 2011 la Wayback Machine // Alexey Dubovtsev, RSDN Magazine #4-2004, 26/03/2005.