В приложении Windows Form вы можете зарегистрировать обработчики событий следующим образом:
this.KeyDown += new KeyEventHandler(Form1_KeyDown);
и позже отмените регистрацию того же обработчика, как этот:
this.KeyDown -= new KeyEventHandler(Form1_KeyDown);
Мне это кажется странным, потому что я ожидаю, что - = потребует того же обработчика, который был зарегистрирован изначально, а не второго нового обработчика с той же сигнатурой. Но из опыта я знаю, что это работает. Это привело меня к мысли, что это был особый случай и на самом деле
Form1_KeyDown == new KeyEventHandler(Form1_KeyDown)
Исходя из этой теории, я часто переписывал свой код, чтобы регистрировать и отменять регистрацию таких событий:
this.KeyDown += Form1_KeyDown;
Это безопасно? Или это будет иметь какой-то непреднамеренный побочный эффект, которого я не понимаю?