Re: [問題] 有關using

作者: neo5277 (I am an agent of chaos)   2016-02-05 21:35:05
當你使用 NEW 建立一個物件 會使電腦自動配置一個記憶體給它
理論上當你不要用的時候 .net會有一個機制 GC GABEGE COLLECTION
做資源回收這樣,就是過一段時間(有人實測但是我是沒測過)
只要new完,用完。程式運行中,他又沒有使用到。就會被抓去投胎了
通常一個物件不用,我們會手動的把它。Dispose掉
就像倚天屠龍記的華山派專治性飢渴跟投錯胎。
可是這種例行作業,每次都要做很麻煩又很討厭。於是乎聰(ㄌㄢˇ)明(ㄉㄨㄛˋ)的M$
PG大神們就發明一個手段讓他可以自我了斷。或是說過河拆橋? 或是說...
算了我好多廢話。
而使用USING 就上一篇推文的一樣
你可以把它當作一種特殊的召喚方法
使用using 召喚出來的物件,都具有一個特異功能,就是當他在using區塊
裡工作完後他就會塵歸塵土歸土了。
你可以用流程控制加上MSG.BOX就可以來檢查看看
大概就是這樣 ~~
作者: ssccg (23)   2016-02-05 21:37:00
通常一個物件不用,我們不會手動把他dispose掉...是會用到外部資源的如db connection/socket/file才會純佔memory的物件不用,只要沒reference就放著等它被GCdispose也只是釋放外部資源,之後就跟普通物件一樣佔用記憶體直到被GC
作者: Litfal (Litfal)   2016-02-06 01:59:00
其實會去實作IDisposable,就代表它佔用了什麼資源,可以的話我還是會用using去包或Dispose()
作者: yeo1987 (Archie)   2016-02-06 15:21:00
有興趣可以去翻Reference Source,看有實作IDisposable的物件是在處理什麼,了解Unmanaged資源、GC、Finalizer就OK了

Links booklink

Contact Us: admin [ a t ] ucptt.com