2012-07-30 32 views
8

这里有区别吗?这两种删除事件处理程序的方式是否有区别?

Button1.Click -= new EventHandler(Button1_Click); 

Button1.Click -= Button1_Click; 

第二种方法似乎并没有为我工作,但我已经看到了使用谷歌时-ING“如何删除事件处理程序”。 编辑:其实都不是为我工作,即使如此应该交替工作吗?

更新:

这些似乎没有为我工作的原因是因为我的AutoPostBack =在我的控制如此。我没有设置断点来查看事件是否被调用,我只是看了浏览器,看它是否刷新(意思是后回)。

+0

@MarkByers没有其他的,我已经更新了我的问题来表明这一点。你很聪明! – Dean 2012-07-30 00:13:30

+0

听起来像'Button1_Click'签名可能是错误的。代码是否适用于添加它们? – Enigmativity 2012-07-30 00:14:38

+0

@Enigmativity我在我的aspx页面前端的标记中添加了事件处理程序,所以这里没有问题。我更新了我的问题,以解释我在假设此代码在其他情况下无法正常工作时所犯的错误。 – Dean 2012-07-30 00:26:49

回答

8

这两段代码是一样的。第二种语法(称为“方法组转换”)是在C#2.0中添加的一项新功能。

+4

我认为第一个是一种误导。它不觉得我删除了现有的。可能很多初学者觉得这很刺激。 – dowhilefor 2012-07-30 00:12:06

+0

@dowhilefor我不再认为自己是初学者,但仍然非常不喜欢第一种语法。从列表中删除对象的引用,因为我试图删除碰巧具有相同值的不同对象,但仍然看起来像是黑客。 – Yaur 2012-07-30 00:33:47

+0

@Yaur对不起,我并不是暗示你是初学者,而只是猜测这可能会让其他人学习语言而感到不快。但我同意,我不认为它是明显的任何人。说实话,我不得不在几个月前看看它发生了什么,因为我不再确定。 – dowhilefor 2012-07-30 08:35:42

0

在功能上,没有。两者没有区别。至于你没有工作的问题,如果这是一个ASP.NET应用程序,你可能想要禁用aspx页面中的自动事件连接。

相关问题