問題:
考慮以下代碼:
<code class="language-c#">MyClass pClass = new MyClass(); pClass.MyEvent += MyFunction; pClass = null;</code>
pClass 會被垃圾回收嗎?或者它會持續存在並繼續觸發事件?是否需要像這樣取消訂閱事件:
<code class="language-c#">MyClass pClass = new MyClass(); pClass.MyEvent += MyFunction; pClass.MyEvent -= MyFunction; pClass = null;</code>
答案:
事件發布者的垃圾回收:
對 MyEvent 的訂閱不會影響 pClass(發布者)的垃圾回收。
目標對象的垃圾回收:
通常,垃圾回收行為取決於 MyFunction 是實例方法還是靜態方法:
其他注意事項:
以上是事件處理程序會阻止我的物件的垃圾收集嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!