Re: [問題] =Nothing
※ 引述《virdust2003 (替機殼洗個熱水澡)》之銘言:
: function T()
: {
: frmDialog f = new frmDialog();
: f.ShowDialog();
: f=null;
: }
: 對於 f=null 這行有必要嗎?
: 執行完T之後 f 的位址不就自動被清除了,也就沒有 東西 指到 new frmDialog()啦~
這理由跟c++中,刪除記憶體後,要不要把指標設為NULL呢?
delete *ptr;
ptr = NULL;
設為null的好處,在於下面的code不容易若不小心用到ptr同名稱
而造成的bug不會漫天飛揚,死當!! (存取到違法的地方)
所以,把指標設為null是一種c++好習慣啦!
至於c#,只要ref變數超過其scope,就自動被mark入gc且不可視
所以不需要啥都設為null! 而且c#的大物件都會支援dispose等close()方式
來回收資源,而這動作也常常就把ref設為null了!
最重要的是,c#已把指標拿掉了,不小心讀取違法記憶體已不見
因此我覺得是不需要設為null了! 除了很重要的物件可設null來讓自己清楚不會用錯!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.119.52.211
※ 編輯: tomex 來自: 140.119.52.211 (08/20 22:52)
討論串 (同標題文章)
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章