请参阅下面的代码.析构函数永远不会被调用.任何人都知道为什么以及如何纠正这个问题?
public partial class Form1 : Form { private Goo goo; public Form1() { InitializeComponent(); goo = Goo.GetInstance(); } } public class Goo { private foo f = new foo(); private static Goo goo; private Goo() {} public static Goo GetInstance() { if(goo!=null) { goo = new Goo(); } return goo; } ~Goo() { } } class foo { ~foo() { } }
Marc Gravell.. 8
除非您清除(设置为null
)字段,否则静态字段引用的对象不会简单地完成- 即使这样,它也是非确定性的并且无法保证.静态字段计为根对象.
什么时候(以及为什么)你会期望收集/最终确定这个?它仍然可以访问......
除非您清除(设置为null
)字段,否则静态字段引用的对象不会简单地完成- 即使这样,它也是非确定性的并且无法保证.静态字段计为根对象.
什么时候(以及为什么)你会期望收集/最终确定这个?它仍然可以访问......