Как работают делегаты и события? - C#

Узнай цену своей работы

Формулировка задачи:

Уже несколько дней пытаюсь изучить как работают делегаты и события, но так до конца и не могу понять. Скажите я правильно рассуждаю "При срабатывании события срабатывает делегат который подписан на него, а потом метод который подписан на делегата"? И еще вопрос. Почему делегаты не подписываются на одно событие хотя сигнатура у них одинаковая?
Листинг программы
  1. public partial class Form1 : Form
  2. {
  3. delegate void del(int i);
  4. delegate void Del(int i);
  5. del deleg;
  6. Del Deleg;
  7. event del Myevent;
  8. public Form1()
  9. {
  10. InitializeComponent();
  11. deleg = new del(Mymetod);
  12. Deleg = new Del(Mymetod);
  13. Myevent += deleg;
  14. Myevent += Deleg; //Эта строка не работает
  15. }
  16. public void Mymetod(int i)
  17. {
  18. }
  19. }

Решение задачи: «Как работают делегаты и события?»

textual
Листинг программы
  1. private del Myevent = null;
  2.  
  3. private void add_Myevent(del value)
  4. {
  5.     del prevHandler;
  6.     del newMyevent = this.Myevent;
  7.     do
  8.     {
  9.         prevHandler = newMyevent;
  10.         newHandler = (del)Delegate.Combine(prevHandler, value);
  11.         newMyevent  =  Interlocked.CompareExchange<del>(ref this.Myevent, newHandler.prevHandler);
  12.     }
  13.     while  (newMail  !=  prevHandler);
  14. }
  15.  
  16. private void remove_Myevent(del value)
  17. {
  18.     del prevHandler;
  19.     del newMyevent = this.Myevent;
  20.     do
  21.     {
  22.         prevHandler = newMyevent;
  23.         newHandler = (del)Delegate.Remove(prevHandler, value);
  24.         newMyevent  =  Interlocked.CompareExchange<del>(ref this.Myevent, newHandler.prevHandler);
  25.     }
  26.     while  (newMail  !=  prevHandler);
  27. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.733 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут