Delegati su neka vrsta pokazivača na metode koji su objektno orjentisani i strogo tipizirani. Najjednostavnije rečeno delegat je referenca na metodu. Najlakše će te ih razumeti ukoliko zamislite da su delegati potpis metoda. Delegati vam omogućavaju da se logika vaše aplikacije u vašim metodama potpuno razdvoji od aplikacija koje su ih pozvale. Inače mnogi programeri ne shvataju zašto bi koristili delegate kad mogu pozvati metodu i ne vide njihovu svrhu. Delegati su predviđeni za situacije u kojima metodama želite da prenosite druge metode. Ja razumem da ste vi navikli da metodama prenosite podatke preko parametara ali ne i metode. Međutim postoje situacije u kojima će vaš metod umesto da za obradu podataka, poziva drugi metod i da bi situacija bila još komplikovanija vi čak i ne znate koji je taj drugi metod koji će se pozivati. Jer to možete znati jedino u fazi izvršavanja i zbog toga je neophodno pozivanje metode preko parametra i zato se koriste delegati.
( Delegati u C# programskom jeziku )
Delegati se često koriste kada radite sa nitima, klasama biblioteka i događajima. Delegate koje nameravate da koristite prvo treba da definišete. To u prevodu znači da vi definisanjem delegata saopštavate kompajleru koju vrstu metoda vaš delegat predstavlja. Svaki delegat se definiše unutar imenskog prostora ili klase. Zatim pravite jedan ili više primeraka tog delegata. Delegati mogu biti i sa i bez parametara. Sintaksa za delegata izgleda ovako; prvo se definiše delegat korišćenjem ključne reči delegate:
public delegate string ImeDelegata(string patrametar);
public ImeDelegata mojDelegat = null;
mojDelegat += TestMetoda;
mojDelegat
= new ImeDelegata(TestMetoda);
mojDelegat -= TestMetoda;
Primer upotrebe delegata
