GC是如何收集基类的

本文关键字:基类 何收集 GC | 更新日期: 2023-09-27 18:02:47

我有以下代码:

baseclass bc = new derivedclass();

在这种情况下会创建基类对象吗?如果是,GC如何知道它正在被使用(因为它没有任何指向它的变量)?GC如何处理这个问题?

编辑:当我设置bc = null时,基类和派生类的析构函数都被调用。如果没有创建基类对象,如何调用基类析构函数?

在没有基类对象的情况下如何调用析构函数?这是MSDN对析构函数的解释:"析构函数用于析构类的实例"。

GC是如何收集基类的

不,只创建派生类的一个实例。当然,它将包含基类的所有字段,但它不是一个单独的对象。没有什么可回收的

注意bc只是一个变量,而不是对象。bc本身不需要被垃圾收集——它只是可以防止对它所引用的值可能被再次读取的变量进行垃圾收集。(如果没有任何东西将再次从bc中读取,并且您没有在调试器下运行,它不会阻止对象被垃圾收集。)