Как работают делегаты и события? - C#
Формулировка задачи:
Уже несколько дней пытаюсь изучить как работают делегаты и события, но так до конца и не могу понять.
Скажите я правильно рассуждаю "При срабатывании события срабатывает делегат который подписан на него, а потом метод который подписан на делегата"?
И еще вопрос. Почему делегаты не подписываются на одно событие хотя сигнатура у них одинаковая?
public partial class Form1 : Form { delegate void del(int i); delegate void Del(int i); del deleg; Del Deleg; event del Myevent; public Form1() { InitializeComponent(); deleg = new del(Mymetod); Deleg = new Del(Mymetod); Myevent += deleg; Myevent += Deleg; //Эта строка не работает } public void Mymetod(int i) { } }
Решение задачи: «Как работают делегаты и события?»
textual
Листинг программы
private del Myevent = null; private void add_Myevent(del value) { del prevHandler; del newMyevent = this.Myevent; do { prevHandler = newMyevent; newHandler = (del)Delegate.Combine(prevHandler, value); newMyevent = Interlocked.CompareExchange<del>(ref this.Myevent, newHandler.prevHandler); } while (newMail != prevHandler); } private void remove_Myevent(del value) { del prevHandler; del newMyevent = this.Myevent; do { prevHandler = newMyevent; newHandler = (del)Delegate.Remove(prevHandler, value); newMyevent = Interlocked.CompareExchange<del>(ref this.Myevent, newHandler.prevHandler); } while (newMail != prevHandler); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д