推 totte: 1.使用using 或 2. 變數在外面宣告 03/09 18:34
謝謝回覆
我發現這樣問好像容易讓人誤會
其實我了解該怎麼使用(包含using,try catch finally等)
我想問的問題是
若我"故意"像這樣不做Dispose,是否如同我講的
離開if後,還是會自動被回收,資源還是會被釋放?
也就是上述例子有無做Dispose是不是結果都一樣,只是時間上有差別而已?
謝謝
※ 編輯: YiMMiY (223.140.87.11), 03/09/2018 22:05:17
推 free112136: 萬一ex,stream可能會在活久一點,有using就會保證在大 03/10 09:05
→ free112136: 括號出去會呼叫dispose 03/10 09:05
→ ssccg: 就GC不保證什麼時候做,時間可能是差很久 03/10 20:07
→ landlord: unmanaged資源因為不歸CLR管,不知道何時以及如何釋放 03/12 22:51
→ landlord: 所以如果沒有被dispose,最後是呼叫該type的finalize() 03/12 22:52
→ landlord: 把外部資源咬住不放掉是一件很危險的事,例如 03/12 22:52
→ landlord: DB connection 咬住,不放掉,通常結果就是兩種 03/12 22:52
→ landlord: connection pool 滿了,無可用connection 03/12 22:53
→ landlord: 這條connection還在使用中,不給你用。 03/12 22:53
→ landlord: 大概就像你要搬檔案,Windows說有其他process使用中 03/12 22:54
→ landlord: 你要退出某個usb裝置,它跟你說還在使用中一樣... 03/12 22:54
→ YiMMiY: 感謝說明~~~ 03/14 23:34