2009-08-20 21 views
38

es la siguiente:Eliminación de controladores de eventos

Button.Click -= new EventHandler(Button_Click); 

lo mismo que esto:

Button.Click -= Button_Click; 

Lo pregunto porque me parece que el primero es la eliminación de una nueva referencia a un método, y el segundo uno está eliminando un método en sí mismo. Pero, de nuevo, ¿quizás la nueva parte de EventHandler está implícita en la sobrecarga + = o - = en caso de que el programador no lo asigne explícitamente así?

En caso de que sea diferente acerca de cómo

Button.Click -= new EventHandler(Button_Click); 

VS

Button.Click -= Button_Click; 

Gracias.

Respuesta

45

Es lo mismo. El segundo es el azúcar meramente sintáctica para el primero, y comparación de igualdad está sobrecargado apropiadamente para tipos de delegado:

Dos delegados del mismo tipo con los mismos objetivos, los métodos y las listas de invocación se consideran iguales.

Fuente: MSDN, Delegate.Equality Operator

+0

Gracias por la respuesta. – Carlo

0

El resultado final es el mismo. El compilador deduce automáticamente el tipo de delegado y, como resultado, no se requiere que el nuevo operador lo cree.

Cuestiones relacionadas