2012-07-30 10 views
8

¿Hay alguna diferencia aquí?¿Hay alguna diferencia entre estas 2 formas de eliminar un controlador de eventos?

Button1.Click -= new EventHandler(Button1_Click); 

y

Button1.Click -= Button1_Click; 

El segundo método no parece trabajar para mí, pero he visto que se usa cuando Google-ing 'cómo quitar un controlador de eventos'. Edit: En realidad, ninguno de los dos funciona para mí, incluso ¿debería funcionar de manera intercambiable?

Actualización:

La razón de que estos no parecen funcionar para mí es porque tenía AutoPostBack = true en mis controles. No estaba estableciendo puntos de interrupción para ver si se llamaban los eventos, solo miraba el navegador para ver si se actualizaba (lo que significaba una devolución posterior).

+0

@MarkByers No, en realidad, he actualizado mi pregunta para mostrar esto. Muy astuto de ti! – Dean

+0

Parece que la firma 'Button1_Click' podría estar equivocada. ¿Funcionó el código para agregarlos? – Enigmativity

+0

@Enigmativity Agregué los controladores de eventos en el marcado en el front-end de mi página aspx así que no hubo ningún problema allí. He actualizado mi pregunta para explicar el error que cometí al asumir que este código no funcionaba cuando era otra cosa. – Dean

Respuesta

8

Esos dos códigos son los mismos. La segunda sintaxis (llamada "conversión de grupo de métodos") fue una nueva característica añadida en C# 2.0.

+4

Creo que el primero es un poco engañoso. No parece que elimine el existente. Posiblemente muchos principiantes lo encuentren irritante. – dowhilefor

+0

@dowhilefor Ya no me considero un principiante, pero aún me desagrada la primera sintaxis. Eliminar una referencia a un objeto de una lista porque intento eliminar un objeto diferente que tiene el mismo valor todavía parece un truco. – Yaur

+0

@Yaur lo siento, no estaba implicando que usted era un principiante, era solo una suposición de que podría ser irritante para otras personas que aprenden el idioma. Pero estoy de acuerdo, no creo que sea obvio para nadie. Para ser sincero, tuve que buscar qué pasa exactamente allí hace un par de meses, porque tampoco estaba seguro. – dowhilefor

0

Funcionalmente, no. No hay diferencia entre los dos. En cuanto a su problema de que no funciona, si se trata de una aplicación ASP.NET, es posible que desee deshabilitar el cableado automático de eventos en la página aspx.

Cuestiones relacionadas