delegate در سی شارپ

سلام دوستان امروز میخواهیم به مبحث delegate در سی شارپ بپردازیم.delegate ها عملکردی مشابه به متغیر ها دارند برا مثال متغیری از نوع string رشته های متنی را در خودت نگه میدارد و delegate ها هم همین کار را انجام می دهند با این تفاوت که متد ها را در خود نگه میدارند.

شکل تعریف delegate ها بصورت زیر میباشد:
{پارامتر های ورودی}{نام} {مقدار برگشتی} delegate {سطح دسترسی}

به مثال زیر توجه کنید:

در مثال بالا ما یک delegate تعریف کردیم که مقدار برگشتی و پارامتر ان int است.حتما به این نکته توجه کنید که فقط میتوانید متدی از این توع یعنی int در این delegate قرار دهیم یعنی اگر delegate با مقدار های string تعریف کردیم متدی که میخواهیم در ان قرار دهیم هم باید همینطور باشد.
تا اینجا ما یک delegate تعریف کردیم اما طریقه استفاده از ان چطور است؟
ابتدا یک متد تعریف میکنیم و برای مثال نام ان را MyMethod قرار دادیم:
در بالا یک متد ساده برا عملیات جمع نوشتیم.حالا برای استفاده از delegate که قبلا تعریف کردیم به صورت زیر عمل میکنیم تا متد خود را در ان قرار بدیم:
خب همانطور که میبینید MyDelegate را مانند متغیر تعریف کردیم و متد خود را در ان قرار دادیم و در خط بعد ان را فراخوانی کردیم.

Multicast Delegate چیست؟

در ادامه به بررسی Multicast Delegate ها میپردازیم.منظور از Multicast Delegate نگه داری تعداد بیشتر متد در delegate است.خب ایتدا دو متد ساده تعریف میکنیم به صورت زیر :

سپس delegate را تعریف میکنیم:

حالا به قطعه کد زیر توجه کنید:
خب همانطور که میبینید مانند قبل متغیر delegate خود را نوشتیم و متد خود یعنی sum را در ان قرار دادیم.سپس در ادامه متد دوم خود یعنی Sub را به ان با =+ اضافه کردیم.به این صورت متغیر delegate ما دو متد را در خود نگه میدارد و اگر متغیر خود را فراخوانی کنیم هر دو متد اجرا خواهند شد و دو عدد برای ما نمایش داده می شوند(اعداد 7 و 1).
امیدوارم از اموزش راضی بوده باشید و برایتان مفید بوده باشد.
موفق باشید..

مطالعه بیشتر