新注册博客,我来占一个沙发,据我理解:null 是帮当前对象指空,但该对象产生的额外垃圾并没有收回,.net下有垃圾回收机制,会定时回收,dispose() 是.net 下封装的方法,自主释放该对象占用的内存。
我理解这个问题是这样的
.net 里面的变量,用法上有点像C++ 的引用变量,效果上更像智能指针。
给变量赋值 NULL 相当于,切断了变量和分配的内存(以及其他资源)的联系,如果想释放这部分资源,基本上只能靠.Net 的垃圾收集了;如果调用dispose,相当于把变量指向的资源释放了,但是变量本身所有占用的一些内存还是没有释放。好像说是这部分是在栈上面,出了作用域就会被释放了。没深入研究过,不太确定。
有点困惑就是当地怎样才能把资源释放干净,就是像 C++ delete那样。还有就是还有没有必要像C++那样继续保持,资源使用完了就进行释放习惯,因为.Net 绝大部分对象都没有实现IDispose接口,不需要释放了
set null 可以使被他引用到的对象 no root and ready for GC,
Dispose是用来释放对象内部的native resource,如句柄等
Dispose 应该是GC 到时就 回收掉资源吧
null 的话可能没Dispose直接.
感觉在 托管代码下 没什么区别