اريد معرفة الفرق بين ال delegate وال event في السي شارب
الفرق بين ال delegate وال event
وجهان لعملة واحدة , هي عملة الـ Delegate فالـ Event هو delegate ليس إلا بميزة واحدة فقط :
عندما تقوم بالربط مع حدث , فلا تستطيع إلا عمل Attach , De attach وبالتالي يقوم يقوم الـ event بحماية مراقبيه (الـ observer ), بمعنى اّخر لا يستطيع أحد أن يحذف كافة مراقبي الحدث , بالأحرى لا يمكن تنفيذ الكود التالي :
Button1.click=new EventHandler<MouseClick>(click_handler);
بل أنت مجبر على إستعمال فقط الـ =+ و =- , أي :
Button1.click+=new EventHandler<MouseClick>(click_handler);
وهما الربط و فك الربط على الترتيب , وهذا سلوك منطقي للغاية ...
أتمنى أن تكون لأمور قد وضحت
بارك الله بك أخي AliBazzi ولكن delegate شيء و Event شيء آخر وإن إرتبط تعريف Event بdelegate!!!
event : هي وسلية لإرسال رسالة Message عند حدوث شيء ما في غرض معين ، ويتم إستقباله من قبل أغراض آخرى قامت بالإشتراك كمتلقين Receivers لهذا الحدث ..
delegate : هو مؤشر على Method محدد بحيث تحمل هذه Method نفس signature التي يعرفها delegate...
Event يستخدم delegate في نمط تعريفه لإجبار المتلقين Receivers على نمط تعريف محدد للإجرائية Method التي ستقوم بإستقبال الحدث ... هذا فقط ما يربط الإثنين ببعضهما .. delegate له إستخدامات أخرى كثيرة خارجة عن مفهوم الأحداث event ..
في الرابط التالي شرح أفضل : Events and Delegates
بالتوفيق