首页 新闻 会员 周边

null与dispose的区别?

0
悬赏园豆:10 [已关闭问题]

请问如果connection对象等于null和调用dispose方法有什么区别,他们谁最快能把对象处理掉?

tiger longhu的主页 tiger longhu | 初学一级 | 园豆:35
提问于:2010-04-15 11:56
< >
分享
其他回答(4)
0

新注册博客,我来占一个沙发,据我理解:null 是帮当前对象指空,但该对象产生的额外垃圾并没有收回,.net下有垃圾回收机制,会定时回收,dispose() 是.net 下封装的方法,自主释放该对象占用的内存。

迎着风追赶 | 园豆:180 (初学一级) | 2010-04-15 12:01
0

博主可以参考这篇博客里面的讨论:

http://blog.csdn.net/suinon/archive/2008/06/20/2569279.aspx

三阶 | 园豆:1436 (小虾三级) | 2010-04-15 12:35
0

我理解这个问题是这样的 

.net 里面的变量,用法上有点像C++ 的引用变量,效果上更像智能指针。

给变量赋值 NULL 相当于,切断了变量和分配的内存(以及其他资源)的联系,如果想释放这部分资源,基本上只能靠.Net 的垃圾收集了;如果调用dispose,相当于把变量指向的资源释放了,但是变量本身所有占用的一些内存还是没有释放。好像说是这部分是在栈上面,出了作用域就会被释放了。没深入研究过,不太确定。

有点困惑就是当地怎样才能把资源释放干净,就是像 C++ delete那样。还有就是还有没有必要像C++那样继续保持,资源使用完了就进行释放习惯,因为.Net 绝大部分对象都没有实现IDispose接口,不需要释放了

outlawor | 园豆:205 (菜鸟二级) | 2010-04-15 19:52
0

set null 可以使被他引用到的对象 no root and ready for GC,

Dispose是用来释放对象内部的native resource,如句柄等

Wayne Gao | 园豆:260 (菜鸟二级) | 2010-04-15 21:46
0

Dispose 应该是GC 到时就 回收掉资源吧

null  的话可能没Dispose直接.

感觉在 托管代码下 没什么区别

万雅虎 | 园豆:326 (菜鸟二级) | 2010-04-21 11:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册