eventos estáticos; MORTAL, ya que nunca salen de su alcance.
static event EventHandler Evil;
for(int i = 0 ; i < 1000000 ; i++)
Evil += delegate {};
El método anónimo es simplemente una agradable a tener aquí, pero son agradables porque también son un cerdo para cancelar la suscripción a menos que tome una copia en un/campo variable y suscribirse que.
Técnicamente esto no es en realidad "filtrado", como todavía se puede acceder a ellos a través de Evil.GetInvocationList()
- sin embargo, cuando se utiliza con objetos normales que esto puede causar tiempos de vida de objetos inesperados, es decir
MyHeavyObject obj = ...
...
SomeType.SomeStaticEvent += obj.SomeMethod;
ahora el objeto al obj
vive para siempre. Esto satisface suficiente de pérdida percibida IMO, y "mi aplicación murió una muerte horrible" es suficiente para mí; p
Algunas de las respuestas en este hilo son políticas, para ver un ejemplo real, consulte aquí: http://smartbear.com/support/articles/aqtime/net-allocation-profiler/ - "Obviamente, este controlador no se elimina del evento dado, lo que da como resultado una fuga". –