它写在链接http://msdn.microsoft.com/en-us/magazine/bb985010.aspx
中“当应用程序创建一个新对象时,new运算符从堆中分配内存。如果对象的类型包含Finalize方法,则指向该对象的指针将放置在终结队列中。”
有人可以澄清我吗
1)这意味着,只有当我们明确使用finalize(使用析构函数)时,对象才会进入finalize队列。
2)每个.NET类通过隐式使用finalize(使用析构函数)使所有.net类库对象进入finalize队列。
3)我们的自定义类如何 A类 { } class A obj将完成或不完成,同时考虑两种情况(显式/隐式析构函数)
4)如果上面的类是用非托管代码编写的,那将会发生什么。它会去最终确定队列
由于
答案 0 :(得分:3)
1)是的,实现Finalize()方法的对象(C#中的“析构函数”)被添加到finalize-queue中。
2)不,大多数.NET类都没有Finalizer。如果未在类中实现一个,则不会将该类的实例添加到finalize队列中。
3)A类只有在实现Finalize-Method时才会进入finalize-queue。 (C#中的“析构函数”
4)不管理非托管类。不会被垃圾收集,也不会被添加到finalize-queue。
一些一般性说明。