Delegate ها اشیایی هستند که مشخصات یک تابع با پراسیجر رو نگهداری میکنند.
فرض کنید میخواید یه تابع بنویسید (با نام F1) که به عنوان پارامتر یه تابع دیگه رو (با نام F2) میگیره و اون رو اجرا میکنه ،
اولین مرحله اینه که مشخص کنید F2 چه مشخصاتی باید داشته باشه (تعداد پارامتر ها ، نوع داده ای اونها و ...) سپس میتونید یک delegate تعریف کنید که بیانگر این مشخصات باشد و پارامتر ورودی تابع F1 رو از جنس این delegate در نظر بگیرید.
public delegate int MyDelegate (int param1,int param2);
public int F1 (MyDelegate input_function)
{
return input_function(10,10);
}
// it must similar to MyDelegate
public int F2 (int param1, int param2)
{
return param1 + param2;
}
public void Main()
{
//use of F1 :
F1(new MyDelegate(F2));
}