sự kiện tĩnh; HÃY THƯỜNG GẶP, vì họ không bao giờ đi ra khỏi phạm vi.
static event EventHandler Evil;
for(int i = 0 ; i < 1000000 ; i++)
Evil += delegate {};
Phương pháp vô danh chỉ đơn giản là một đẹp-to-có ở đây nhưng là tốt đẹp bởi vì họ cũng là một con lợn để bỏ đăng ký, trừ khi bạn có một bản sao vào một biến/lĩnh vực và đăng ký rằng.
Về mặt kỹ thuật điều này là không thực sự "rò rỉ", như bạn vẫn có thể truy cập chúng qua Evil.GetInvocationList()
- tuy nhiên, khi được sử dụng với các đối tượng thường xuyên này có thể gây ra kiếp đối tượng bất ngờ, tức là
MyHeavyObject obj = ...
...
SomeType.SomeStaticEvent += obj.SomeMethod;
nay là đối tượng tại obj
sẽ tồn tại mãi mãi. Điều này thỏa mãn đủ rò rỉ nhận thức IMO và "ứng dụng của tôi đã chết một cái chết khủng khiếp" là đủ tốt cho tôi; p
Nguồn
2011-07-04 06:28:46
Một số câu trả lời trong chuỗi này là chính trị, ví dụ thực tế xem tại đây: http://smartbear.com/support/articles/aqtime/net-allocation-profiler/ - "Rõ ràng, trình xử lý này không bị xóa khỏi sự kiện đã cho dẫn đến rò rỉ". –