Re: [問題] 有關using

看板C_Sharp作者 (I am an agent of chaos)時間8年前 (2016/02/05 21:35), 8年前編輯推噓0(0010)
留言10則, 3人參與, 最新討論串2/3 (看更多)
當你使用 NEW 建立一個物件 會使電腦自動配置一個記憶體給它 理論上當你不要用的時候 .net會有一個機制 GC GABEGE COLLECTION 做資源回收這樣,就是過一段時間(有人實測但是我是沒測過) 只要new完,用完。程式運行中,他又沒有使用到。就會被抓去投胎了 通常一個物件不用,我們會手動的把它。Dispose掉 就像倚天屠龍記的華山派專治性飢渴跟投錯胎。 可是這種例行作業,每次都要做很麻煩又很討厭。於是乎聰(ㄌㄢˇ)明(ㄉㄨㄛˋ)的M$ PG大神們就發明一個手段讓他可以自我了斷。或是說過河拆橋? 或是說... 算了我好多廢話。 而使用USING 就上一篇推文的一樣 你可以把它當作一種特殊的召喚方法 使用using 召喚出來的物件,都具有一個特異功能,就是當他在using區塊 裡工作完後他就會塵歸塵土歸土了。 你可以用流程控制加上MSG.BOX就可以來檢查看看 大概就是這樣 ~~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.160.166.164 ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1454679309.A.A81.html

02/05 21:37, , 1F
通常一個物件不用,我們不會手動把他dispose掉...
02/05 21:37, 1F

02/05 21:39, , 2F
是會用到外部資源的如db connection/socket/file才會
02/05 21:39, 2F
占用連線的情況~~ 恩~~那我都多寫了.... ※ 編輯: neo5277 (1.160.166.164), 02/05/2016 21:43:24

02/05 21:44, , 3F
純佔memory的物件不用,只要沒reference就放著等它被GC
02/05 21:44, 3F

02/05 21:44, , 4F
dispose也只是釋放外部資源,之後就跟普通物件一樣佔用記憶
02/05 21:44, 4F

02/05 21:44, , 5F
體直到被GC
02/05 21:44, 5F
原來是這樣呀 所以不是主動送他上路~~還是有一個循環 感謝感謝 又學到了。 ※ 編輯: neo5277 (1.160.166.164), 02/05/2016 21:45:51

02/06 01:59, , 6F
其實會去實作IDisposable,就代表它佔用了什麼資源,可以
02/06 01:59, 6F

02/06 02:02, , 7F
的話我還是會用using去包或Dispose()
02/06 02:02, 7F

02/06 15:21, , 8F
有興趣可以去翻Reference Source,看有實作IDisposable
02/06 15:21, 8F

02/06 15:21, , 9F
的物件是在處理什麼,了解Unmanaged資源、GC、Finalizer
02/06 15:21, 9F

02/06 15:21, , 10F
就OK了
02/06 15:21, 10F
文章代碼(AID): #1MjAKDg1 (C_Sharp)
文章代碼(AID): #1MjAKDg1 (C_Sharp)