Re: [問題] 請問個c#觀念問題

看板C_Sharp (C#)作者 (tomex_ou)時間20年前 (2005/11/10 16:55), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/4 (看更多)
※ 引述《fillmore (.......................)》之銘言: : class Form1 : { : Form2 F2; : public Form1() : { : F2 = new Form2(this); : } : } : class Form2 : { : Form1 F1; : public Form2(Form1 ref) : { : F1 = ref; : } : } : 請問Form1物件的F2 = null的時候 : 1.確實在記憶體中有清乾淨嗎?? (因為F2物件裡面有Form1的參考,所以不知道會怎樣) : 2.如果沒有清乾淨那該如何清理呢? : 3.或是兩個不同的Form互有對方的參考又該如何清理? 1. 假如你已new Form1,它則產生Form1的記憶體(以下簡稱MM)使用,它放Form2, 而Form2本身只是具有一個Form1的指向,並沒有實際的MM配置。 當F2=null時,GC會註記Form2物件的ref count - 1,等ref-count為0時 可能立即或等一會兒再回收MM資料 2.要確保會立即清乾淨,就是實作Dispose()這介面方法 用F2.Dispose() 來代替F2=null。 3.不管怎樣的參考,你只要回歸Form1/Form2各自的Ref-Count現值 就可知道它們的回收狀況。 -- 貫徹分享精神 我為人人,人人為我 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.78.132.15
文章代碼(AID): #13SmhlX4 (C_Sharp)
討論串 (同標題文章)
文章代碼(AID): #13SmhlX4 (C_Sharp)