zdarzenia statyczne; ŚMIESZNIE, ponieważ nigdy nie wykraczają poza zakres.
static event EventHandler Evil;
for(int i = 0 ; i < 1000000 ; i++)
Evil += delegate {};
Sposób anonimowy jest po prostu ładny-to-mieć tutaj, ale są ładne, ponieważ również to świnia zrezygnować, jeśli nie brać pod kopię zmiennej/pola i zapisz że.
Technicznie nie jest to faktycznie „wyciekły”, ponieważ nadal można uzyskać do nich dostęp poprzez Evil.GetInvocationList()
- jednak w przypadku korzystania z regularnych obiektów może spowodować nieoczekiwane wcieleń obiektów, tj
MyHeavyObject obj = ...
...
SomeType.SomeStaticEvent += obj.SomeMethod;
obecnie przedmiotem na obj
żyje na zawsze. To satysfakcjonujące odczucie postrzeganego przecieku IMO i "moja aplikacja umarła okropną śmiercią" jest wystarczająco dobre dla mnie; p
Niektóre odpowiedzi w tym wątku są polityczne, na prawdziwy przykład patrz tutaj: http://smartbear.com/support/articles/aqtime/net-allocation-profiler/ - "Oczywiście ten handler nie jest usuwany z danego zdarzenia, co skutkuje przeciekiem." –