delegates ejemplo - C#:Diferencia entre '+=anEvent' y '+=new EventHandler(anEvent)'





raise custom (4)


No hay diferencia. En su primer ejemplo, el compilador deducirá automáticamente el delegado que le gustaría crear una instancia. En el segundo ejemplo, define explícitamente al delegado.

La inferencia del delegado se agregó en C # 2.0. Entonces, para los proyectos C # 1.0, el segundo ejemplo fue su única opción. Para los proyectos 2.0, el primer ejemplo que utiliza la inferencia es lo que preferiría usar y ver en la base de código, ya que es más conciso.

Tome el siguiente código:

private void anEvent(object sender, EventArgs e) {
    //some code
}

¿Cuál es la diferencia entre lo siguiente?

[object].[event] += anEvent;

//and

[object].[event] += new EventHandler(anEvent);

[ACTUALIZAR]

Aparentemente, no hay diferencia entre los dos ... el primero es solo azúcar sintáctico de este último.




[object].[event] += anEvent;

es solo azúcar sintáctico para -

[object].[event] += new EventHandler(anEvent);



No creo que haya una diferencia. El compilador transforma el primero en el segundo.




Encontré este método en la documentación de la clase DictionaryBase en MSDN:

foreach (DictionaryEntry de in myDictionary)
{
     //Do some stuff with de.Value or de.Key
}

Este fue el único que pude obtener funcionando correctamente en una clase que heredó de DictionaryBase.





c# delegates event-handling