簡體   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