سلام!
امروز قصد دارم درمورد کلمه کلیدی delegate صحبت کنم.
تعریف وکیل (delegate) شبیه امضای متد است. یک مقدار برگشتی و هر تعداد پارامتر از هر نوع دارد:
public delegate void TestDelegate(string Message);
delegate یک نوع مرجع است که می تواند برای کپسوله کردن یک متد با نام یا بی نام استفاده شود. delegate ها شبیه اشاره گرها تابع در زبان برنامه نویسی ++c هستند.
نکات:
- delegate ها زیربنای event ها هستند.
- یک وکیل می تواند با انتسابش به یک متد با نام یا بی نام نمونه سازی شود.
- یک نماینده حتما باید با یک متد یا عبارت لامبدا که دارای نوع خروجی و پارامترهای ورودی سازگار است نمونه سازی شود. برای استفاده وکیل با متد بی نام، delegate و کد منتسب به آن، باهم تعریف می شوند.
تعریف وکیل:
delegate double MathAction(int a);
تعریف تابع:
static double Dbl(int num)
{
return num*2;
}
نمونه سازی برای تابع با نام:
MathAction ma=Dbl;
احضار کردن وکیل (Invokation):
double MultByTwo=ma(7);
نمونه سازی برای متد بی نام:
MathAction ma2=delegate(int inp)
{
return inp*inp;
};
نمونه سازی عبارت لامبدا:
MathAction ma3= s=>s*s*s;
double cube=ma3(3);
راستی چه خبر از جلیلی؟