موصى به, 2024

اختيار المحرر

الفرق بين المندوبين والأحداث في C #

تلعب كل من الإنجازات والأحداث دورًا هامًا في البرنامج القائم على الحدث. يمكن للمفوضين الرجوع إلى طريقة ، وهي تشبه إلى حد بعيد مؤشر الدالة في C ++. الأحداث تخطر أنه قد تم تنفيذ بعض الإجراءات. يتمثل الاختلاف الأساسي بين المندوبين والأحداث في أن المندوبين يحتفظون بمرجع الأساليب والحدث يوفر طريقة للوصول إلى هذه الطريقة باستخدام المفوضين.

رسم بياني للمقارنة

أساس للمقارنةالمندوبينأحداث
الأساسيةيحمل المفوض مرجع طريقة.هذا الحدث هو تجريد الطبقات المفردة المقدمة إلى المندوبين.
بناء الجملةتفويض return_type delegate_name (parameter_list)؛حدث event_delegate event_name؛
الكلمةيتم الإعلان عن المفوض باستخدام كلمة "مفوض".يتم الإعلان عن حدث باستخدام كلمة "حدث".
إعلانيتم الإعلان عن مندوب خارج أي صف.يتم الإعلان عن حدث داخل الصف.
يتوسللاستدعاء طريقة ، يجب أن تتم الإشارة إلى المفوض.لاستدعاء طريقة ، يجب تعيينها للحدث.
التغاير و contravarianceأنها توفر المرونة للمندوبين.لا يوجد مثل هذا المفهوم.
Event Accessorلا يوجد مثل هذا المفهوم.يدير قائمة معالجات الأحداث.
الاعتمادالمندوبون مستقلون عن الأحداث.لا يمكن إنشاء الحدث بدون المندوبين.

تعريف المندوبين

في المفوضين C # يتم استخدام كمؤشر دالة للإشارة إلى أسلوب. وهو عبارة عن كائن يشير إلى طريقة تم تعيينها لها. يمكن استخدام نفس المندوب للإشارة إلى طرق مختلفة ، لأنه قادر على الاحتفاظ بالإشارة إلى أساليب مختلفة ولكن ، في وقت واحد. يتم تحديد الأسلوب الذي سيتم استدعاؤه بواسطة المفوض في وقت التشغيل. إن بناء جملة إعلان مفوض هو كما يلي:

 تفويض return_type delegate_name (parameter_list)؛ 

هنا ، يُعرّف return_type نوع القيمة التي يتم إرجاعها بواسطة الطريقة ، التي يطلق عليها المفوض و delegate_name هو اسم المفوض. يحدد parameter_list قائمة المعلمات المطلوبة بواسطة الطرق التي سيتم استدعاؤها بواسطة المفوض.

هناك بعض النقاط الهامة التي يجب تذكرها حول المندوبين. يمكنه استدعاء أي أسلوب يطابق توقيعه ونوع الإرجاع. يمكن للمفوض استدعاء أسلوب مثيل أو طريقة ثابتة. إذا كان يستدعي أسلوب مثيل يجب عليه أخذ المساعدة من الكائن لاستدعاء الطريقة. يدعم المندوبون عملية الإرسال المتعدد ، أي يمكنك تجميع الطرق التي سيتم استدعائها تلقائيًا عندما يتم استدعاء المفوض الذي يشير إليها. عليك ببساطة إنشاء كائن مفوض وتعيين الطرق واحدة تلو الأخرى إلى السلسلة باستخدام "+ =" عامل التشغيل. يمكنك أيضًا فك تشفير طريقة باستخدام "- =" عامل التشغيل.

الميزات التي تضيف مرونة إضافية للمندوب هي Covariance و Contravariance. تسمح التباين و Contravariance بالحالة التي يختلف فيها نوع الإرجاع وتوقيع الطريقة المخصصة للمفوض عن المفوض.

  • يسمح التباين المشترك بتعيين طريقة للمفوض حيث يكون نوع الإرجاع للأسلوب عبارة عن فئة مشتقة من الفئة التي تحدد نوع الإرجاع الخاص بالمفوض.
  • يتيح لك Contravariance تعيين أسلوب للمفوض حيث يكون نوع المعلمة من الطريقة فئة أساسية للفئة المحددة كمعلمة المفوض.

تعريف الأحداث

الأحداث هي الإجراء الذي يتم تنفيذه والذي يغير حالة الكائن. يتم الإعلان عن الأحداث باستخدام المندوبين ، دون وجود المفوضين لا يمكنك أن تعلن الأحداث. يمكنك القول أن الحدث يوفر التغليف للمفوضين. هناك نوعان من المركبات الهامة عند التعامل مع الأحداث التي هي معالج الحدث والحدث. إذا كانت الكائنات مهتمة بالحدث ، فسوف تسجل معالج أحداث لهذا الحدث المعين. وعندما يتم إطلاق الأحداث يتم استدعاء معالجات الأحداث المسجلة. إعلان الحدث هو على النحو التالي:

 حدث event_delegate event_name؛ 

هنا ، "الحدث" هو كلمة رئيسية تعرض إعلان حدث. بعد ذلك ، يعرض event_delegate اسم المفوض الذي يدعم الحدث. ثم ، event_name هو اسم الحدث

هناك بعض النقاط الهامة التي يجب تذكرها أثناء التعامل مع الأحداث. مثل المفوضين ، يمكن أيضًا أن تكون الأحداث متعددة الإرسال ، أي كائنات متعددة مقيدة (مسجلة) إلى معالج أحداث ، تستجيب عند رفع الحدث. يمكن إضافة معالجات الحدث إلى السلسلة باستخدام المشغل "+ =" ويمكن فكها باستخدام المشغل "- =" يمكن استخدام كل من الأسلوب الثابت والمثيل كمعالج حدث. يمكن أن يمنحك accessor الحدث التحكم في تطبيق قائمة معالج الأحداث.

يمكن أن تحتوي الواجهة على أحداث. يمكن أن تكون الأحداث أيضًا مجردة ، بينما لا يمكن أن يكون الحدث المرتكز على المُلحق مجرَّدًا. يمكن أن يكون الحدث ظاهريًا ويتم تجاوزه بفئة مشتقة.

الاختلافات الأساسية بين المندوبين والأحداث في C #

  1. المفوض هو كائن يستخدم كمؤشر دالة لاحتواء مرجع الطريقة. من ناحية أخرى ، توفر الأحداث تجريدًا للمفوضين.
  2. تعتبر الكلمة الأساسية المطلوبة للتعبير عن تفويض مفوضاً في حين أن الكلمة الأساسية المطلوبة لإعلان حدث هي الحدث .
  3. يتم الإعلان عن مندوب خارج الفصل الدراسي ، بينما يتم الإعلان عن حدث داخل الصف.
  4. لاستدعاء أسلوب باستخدام كائن مفوض ، يجب أن تتم الإشارة إلى الأسلوب إلى كائن المفوض. من ناحية أخرى ، لاستدعاء طريقة باستخدام كائن حدث ، يجب الإشارة إلى كائن الحدث.
  5. يوفر التباين و Contravariance مرونة إضافية لأجسام المفوضين. من ناحية أخرى ، لا يحتوي الحدث على مثل هذه المفاهيم.
  6. يقوم Access Eventor بمعالجة قائمة معالجات الأحداث بينما لا يملك المفوض مثل هذا المفهوم.
  7. المندوبون مستقلون عن الأحداث ولكن لا يمكن إنشاء الأحداث بدون مندوب.

استنتاج:

ويفيد المندوبون أثناء دعمهم للأحداث ، ويقدمون تسهيلات لتنفيذ الأسلوب في وقت التشغيل. يتيح لنا accessorator مزامنة معرفات الأحداث في تطبيقات multithreading.

Top