本文介绍了分配给事件的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是否防止垃圾收集拥有的对象?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-15 23:37