2010-06-09 14 views
6

personas que han visto sus eventos definen así:¿Por qué se declara este evento con un delegado anónimo?

public event EventHandler<EventArgs> MyEvent = delegate{}; 

Puede alguien explicar cómo esto es diferente de la definición que sin ella? ¿Es para evitar la comprobación de nulo cuando se plantea el evento?

+0

si no estoy equivocado, el término correcto para esto es "método anónimo" no "delegado anónimo". –

Respuesta

10

lo tienes - añadió el delegado vacío le permite evitar esto:

public void DoSomething() { 
    if (MyEvent != null) // Unnecessary! 
     MyEvent(this, "foo"); 
} 
2

Esta declaración asegura que MyEvent nunca es nulo, eliminando la tarea tediosa y propensa a errores de tener que buscar nulo cada vez, a costa de ejecutar un delegado vacío adicional cada vez que se dispara el evento.

Cuestiones relacionadas