本文介绍了分配给事件的lambdas是否防止垃圾收集拥有的对象?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
说你有一个有事件属性的类。如果您在本地上下文中实例化此类,而不需要外部引用,那么会为事件分配一个lambda表达式,阻止实例成为垃圾回收? {
var o = new MyClass();
o.MyClassEvent + =(args)=> {};
}
// Will'o'有资格在这里收集垃圾吗?
解决方案
不, o
将被释放,lambda函数也将被释放。没有任何其他地方引用
o
,所以没有理由不能被释放。
Say you have a class with an event property. If you instantiate this class in a local context, without outside references, would assigning a lambda expression to the event prevent the instance from becoming garbage collected?
{
var o = new MyClass();
o.MyClassEvent += (args) => {};
}
// Will 'o' be eligible for garbage collection here?
解决方案
No, o
will get freed, and so will the lambda function. There are no references to o
from anywhere else, so there is no reason that it should not get freed.
这篇关于分配给事件的lambdas是否防止垃圾收集拥有的对象?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!