چند مثال از Delegate ها را بررسی می کنیم.
delegate int AddNumber(int x, int y);
اولین مثال AddNumber است. همانطور که از بدنه delegate مشخص است، دو پارامتر از نوع integer گرفته و خروجی حاصل از آن نیز یک عدد integer است. بنابراین این delegate به متدی اشاره می کند که آن هم دو پارامتر از نوع Integer گرفته و نوع پارامتر بازگشتی آن نیز integer است.
delegate void Display(string value);
دومین مثال Display است که یک پارامتر از نوع string گرفته و پارامتری بر نمی گرداند و یا اینطور می توان گفت که پارامتری که بر می گرداند از نوع void است. اینجا نیز مشابه توضیحاتی که بالا ارائه شد، delegate به متدی اشاره می کند که یک پارامتر ورودی از نوع string دارد و نوع پارامتری بازگشتی آن void است.
delegate string GetName();
سومین مثال نیز GetName است، که هیچ پارامتر ورودی ندارد و نوع پارامتر بازگشتی آن string است. این delegate نیز دقیقا به متدی اشاره می کند که پارامتر ورودی ندارد و مقدار بازگشتی آن از نوع string است.
به سراغ نمونه هایی از متد هایی می ریم که delegate ها می توانند به آنها اشاره کنند.
Delegate زیر را ببینید:
delegate int NumberDelegate(int x, int y);
مانند مثال اول، دو پارامتر از نوع integer گرفته و مقدار بازگشتی آن هم از نوع integer است.
این delegate می تواند به هر متدی اشاره کند که دو پارامتر از نوع integer گرفته و مقدار بازگشتی آن نیز از نوع integer است.
خوب، چند متد را می بینیم که می توانند به Delegate بالا اشاره کنند.
int Add(int a, int b);
int Subtract(int num1, int num2);
int Multiply(int x, int y);
int Divide(int x1, int y1);
int Modulus(int val1, int val2);
تمام متد هایی که به عنوان مثال آورده ایم، 2 پارامتر ورودی از نوع integer دارند و نوع پارامتر بازگشتی آنها نیز از نوع integer است. بنابراین NumberDelegate می تواند به هر یک از آنها اشاره کند.
اجازه بدهید مثال دیگری را ببینیم.
delegate void DisplayDelegate(string str);
در اینجا DisplayDelegate یک پارامتر ورودی از نوع string گرفته و نوع مقدار بازگشتی آن نیز از نوع void است. بنابراین این delegate نیز به هر متدی که یک پارامتر ورودی از نوع string دارد و نوع مقدار بازگشتی آن void است، می تواند اشاره کند. خوب، چند متد را می بینیم که می توانند به DisplayDelegate اشاره کنند.
void PrintStr(string value);
void ShowIt(string temp);
همانطور که مشاهده می کنید هر دو متد PrintStr و ShowIt یک پارامتر از نوع string داشته و نوع پارامتر برگشتی آنها نیز از نوع void است. بنابراین می بینیم که ساختار تعریف delegate با ساختار تعریف متد ها مطابقت دارد. بنابراین DisplayDelegate می تواند به هر یک از این دو متد اشاره کند.