gpt4 book ai didi

c# - 事件处理程序的匿名方法不是泄漏?

转载 作者:行者123 更新时间:2023-11-30 18:51:03 26 4
gpt4 key购买 nike

每当您向事件处理程序添加委托(delegate)时,您应该稍后将其删除,对吗?因此,如果您将匿名方法附加到事件,这是否会导致事件处理程序泄漏,因为您以后无法删除它?此代码示例来自 http://msdn.microsoft.com/en-us/library/0yw3tz5k%28VS.80%29.aspx似乎暗示这是一种不错的做法。

// Create a handler for a click event
button1.Click += delegate(System.Object o, System.EventArgs e)
{ System.Windows.Forms.MessageBox.Show("Click!"); };

这真的是一个好的做法吗?

最佳答案

Whenever you add a delegate to an event handler, you should remove it later, right?

不一定,没有。通常,您希望事件处理程序在事件本身可以引发时保持有效 - 这在 UI 中当然很常见。

Is this really an okay practice?

当然可以,只要您不需要解开处理程序。考虑一下您将取消事件处理程序的连接点。如果它是“当表单(或按钮,或其他)可以进行垃圾收集时”,那么删除处理程序有什么好处?就让它以这种形式被垃圾收集起来...

关于c# - 事件处理程序的匿名方法不是泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13635505/

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