Algunos textos antes del código para que el resumen de la pregunta no se trunque.¿Por qué alguien debe suscribirse para que ocurra un evento?
class Tree
{
public event EventHandler MadeSound;
public void Fall() { MadeSound(this, new EventArgs()); }
static void Main(string[] args)
{
Tree oaky = new Tree();
oaky.Fall();
}
}
No he utilizado mucho los eventos en C#, pero el hecho de que esto causaría un NullRefEx parece raro. La referencia de EventHandler se considera nula porque actualmente no tiene suscriptores, pero eso no significa que el evento no se haya producido, ¿verdad?
EventHandlers se diferencian de los delegados estándar por el evento palabra clave. ¿Por qué los diseñadores de idiomas no los prepararon para disparar silenciosamente al vacío cuando no tenían suscriptores? (Supongo que puedes hacerlo manualmente agregando explícitamente un delegado vacío).
Ejemplo impresionante! –
También +1 para el ejemplo. Supongo que llamar a Fall en un bosque solitario no disparará a MadeSound. – OregonGhost
cuando un árbol cae en el bosque y nadie está escuchando, sigue emitiendo un sonido - dice "Moo" –