作者neo5277 (I am an agent of chaos)
看板C_Sharp
标题Re: [问题] 有关using
时间Fri Feb 5 21:35:05 2016
当你使用 NEW 建立一个物件 会使电脑自动配置一个记忆体给它
理论上当你不要用的时候 .net会有一个机制 GC GABEGE COLLECTION
做资源回收这样,就是过一段时间(有人实测但是我是没测过)
只要new完,用完。程式运行中,他又没有使用到。就会被抓去投胎了
通常一个物件不用,我们会手动的把它。Dispose掉
就像倚天屠龙记的华山派专治性饥渴跟投错胎。
可是这种例行作业,每次都要做很麻烦又很讨厌。於是乎聪(ㄌㄢˇ)明(ㄉㄨㄛˋ)的M$
PG大神们就发明一个手段让他可以自我了断。或是说过河拆桥? 或是说...
算了我好多废话。
而使用USING 就上一篇推文的一样
你可以把它当作一种特殊的召唤方法
使用using 召唤出来的物件,都具有一个特异功能,就是当他在using区块
里工作完後他就会尘归尘土归土了。
你可以用流程控制加上MSG.BOX就可以来检查看看
大概就是这样 ~~
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.160.166.164
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1454679309.A.A81.html
1F:→ ssccg: 通常一个物件不用,我们不会手动把他dispose掉... 02/05 21:37
2F:→ ssccg: 是会用到外部资源的如db connection/socket/file才会 02/05 21:39
占用连线的情况~~ 恩~~那我都多写了....
※ 编辑: neo5277 (1.160.166.164), 02/05/2016 21:43:24
3F:→ ssccg: 纯占memory的物件不用,只要没reference就放着等它被GC 02/05 21:44
4F:→ ssccg: dispose也只是释放外部资源,之後就跟普通物件一样占用记忆 02/05 21:44
5F:→ ssccg: 体直到被GC 02/05 21:44
原来是这样呀 所以不是主动送他上路~~还是有一个循环 感谢感谢
又学到了。
※ 编辑: neo5277 (1.160.166.164), 02/05/2016 21:45:51
6F:→ Litfal: 其实会去实作IDisposable,就代表它占用了什麽资源,可以 02/06 01:59
7F:→ Litfal: 的话我还是会用using去包或Dispose() 02/06 02:02
8F:→ yeo1987: 有兴趣可以去翻Reference Source,看有实作IDisposable 02/06 15:21
9F:→ yeo1987: 的物件是在处理什麽,了解Unmanaged资源、GC、Finalizer 02/06 15:21
10F:→ yeo1987: 就OK了 02/06 15:21