Kir*_*ari 1 c# garbage-collection casting
嘿,我很好奇.如果我在方法中创建一个派生类,然后返回一个指向基类的指针,并且所有其他对它是派生类的事实的引用都会消失,这是什么阻止垃圾收集器垃圾收集派生的一部分变量类?如果没有任何内容指向派生类变量,该内存是否会立即释放?
如果我然后将基类指针强制转换回派生类,这是否意味着派生类变量中的数据可能不再存在?
在C++的实现中,指向对象"作为派生类"的指针和指向同一对象"作为基类"的指针通常被实现为不同的指针.CLR的情况并非如此; 当您将对派生类的引用强制转换为对基类的引用时,引用的位不会更改.每个引用都"知道"它自己的运行时类型,因此垃圾收集器永远不会混淆.