Re: [問題] 請問個c#觀念問題
※ 引述《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
討論串 (同標題文章)
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章