繁体   English   中英

在C#中强制转换为派生类和垃圾回收

[英]casting to a derived class and garbage collection in C#

嘿,我对某事感到好奇。 如果我在方法中创建一个派生类,则返回一个指向基类的指针,而所有其他有关它是派生类的事实的引用都消失了,这阻止了垃圾收集器对收集属于派生类的变量进行垃圾收集。类? 如果没有任何东西指向派生的类变量,那么该内存会立即释放吗?

如果我然后将基类指针转换回派生类,这是否意味着派生类变量中的数据可能不再存在?

在C ++的实现中,指向对象“作为派生类”的指针和指向相同对象“作为基类”的指针被实现为不同的指针是很常见的。 在CLR中并非如此。 当您将对派生类的引用转换为对基类的引用时,引用的位不变。 每个引用都“知道”自己的运行时类型,因此垃圾收集器永远不会感到困惑。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM