PDA

View Full Version : سوال: تفاوت Delegate و Event



ProUnity
شنبه 20 تیر 1394, 20:39 عصر
سلام دوستان

من داشتم راجع به Event ها و Delegate ها تحقیق میکردم و اونطور که من متوجه شدم در نگاه اول و تست کوچیکی که کردم این دو باهم برام تفاوتی نداشت. سوالم اینه که تفاوتشون چیه و چرا وقتی کاری رو با delegate‌ میشه انجام داد از event استفاده کنیم؟

با تشکر

SabaSabouhi
یک شنبه 21 تیر 1394, 08:27 صبح
سلام دوستان

من داشتم راجع به Event ها و Delegate ها تحقیق میکردم و اونطور که من متوجه شدم در نگاه اول و تست کوچیکی که کردم این دو باهم برام تفاوتی نداشت. سوالم اینه که تفاوتشون چیه و چرا وقتی کاری رو با delegate‌ میشه انجام داد از event استفاده کنیم؟

با تشکر

سلام
یک event هم یک نوع delegate هست که یه سری کارهای اضافی انجام می‌ده. مثلاً شما می‌تونی با اپراتور + یک event رو به شی خودت اضافه کنی.
و این که برای event یک مجموعه وجود داره به صورتی که برای یک شی شما می‌تونی چند تا event handler تعیین کنی.

صبا صبوحی

Motevalizadeh
یک شنبه 21 تیر 1394, 12:30 عصر
http://stackoverflow.com/questions/29155/what-are-the-differences-between-delegates-and-events

RmeXXXXXXXXX
پنج شنبه 25 تیر 1394, 20:16 عصر
delegate ها یک ساختار داده هستند که تنها آدرس توابع رو نگهداری می کنند. در هنگام تعریف یک نماینده یا delegate شما نوع توابع رو مشخص میکنید.
اما eventها ساختار داده ای نیستند. مکانیزمی مثل خصوصیت ها و متد ها هستند که برای پیاده سازی ارسال پیام استفاده می شوند. بعبارت دیگر برای فرستادن پیام یا همون با خبر سازی اشیا از رخدادی درونی از event ها استفاده میشود. این مکانیزم جهت تکمیل نیاز به آدرس توابعی که در رخداد مربوطه ثبت نام کرده اند دارد. این آدرس ها در متغیری از نوع delegate مربوطه ذخیره میشوند. بدین ترتیب اشیا میتوانند تنها با متدهای خاصی (مطابق با delegate) در رخداد خاصی از شی دیگری ثبت نام کنند و شی صادر کننده رخداد (پیام) هم توسط متغیری از نوع delegate آدرس این توابع رو نگهداری می کند تا در موقع مناسب فراخوانی کنند.