问题:
考虑以下代码:
<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中文网其他相关文章!