gpt4 book ai didi

C# 显式删除事件处理程序

转载 作者:可可西里 更新时间:2023-11-01 07:50:36 30 4
gpt4 key购买 nike

我想知道将对象设置为 null 是否会清除所有附加到对象事件的事件处理程序...

例如

Button button = new Button();
button.Click += new EventHandler(Button_Click);
button = null;

button = new Button();
button.Click += new EventHandler(Button_Click);
button = null;

等...

会不会造成内存泄漏?

最佳答案

如果在任何地方都没有对 button 的其他引用,那么就没有必要在此处删除事件处理程序以避免内存泄漏。事件处理程序是单向引用,因此仅当具有事件的对象长期存在并且您希望避免处理程序(即具有处理程序方法的对象)的生命周期超过它们时,才需要删除它们应该。在您的示例中,情况并非如此。

关于C# 显式删除事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1198076/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com