Как работают делегаты и события? - 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);
}