在 Windows 窗体应用程序中,您可以像这样注册事件处理程序:
this.KeyDown += new KeyEventHandler(Form1_KeyDown);
然后像这样取消注册相同的处理程序:
this.KeyDown -= new KeyEventHandler(Form1_KeyDown);
对我来说这似乎很奇怪,因为我希望 -= 需要最初注册的相同处理程序,而不是相同签名的第二个新处理程序。但根据经验,我知道这是可行的。这使我认为这是一个特例,实际上
Form1_KeyDown == new KeyEventHandler(Form1_KeyDown)
基于这个理论,我经常重写我的代码来注册和注销这样的事件:
this.KeyDown += Form1_KeyDown;
这安全吗?或者这会产生一些我没有意识到的意外副作用?