válida operación objeto net eventos evento estado ejemplo desuscribirse deshabilitar delegados dado crear actual c# events delegates

c# - operación - Eliminando manejadores de eventos



eventos y delegados c# (2)

Es esto:

Button.Click -= new EventHandler(Button_Click);

lo mismo que esto:

Button.Click -= Button_Click;

Lo pregunto porque a mí me parece que el primero está eliminando una nueva referencia a un método, y el último 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, ¿qué tal

Button.Click -= new EventHandler(Button_Click);

VS

Button.Click -= Button_Click;

Gracias.


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.


Es lo mismo. El segundo es meramente azúcar sintáctica para el primero, y la comparación de igualdad se sobrecarga apropiadamente para los tipos de delegados:

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

Fuente: MSDN, Delegate.Equality Operator