.Net:是否正确:objSample.dispose()表示objSample=null?

.Net:是否正确:objSample.dispose()表示objSample=null?,.net,null,dispose,.net,Null,Dispose,只想知道objSample.dispose()等于objSample=null 事实上,我能从反汇编程序中得到这些问题的答案吗?怎么做 谢谢不,处理对象并不意味着将对该对象的引用设置为空 Disposing是一种约定,在程序员需要时清理资源,而不是等到垃圾收集器决定启动时再清理 要回答您的问题,请写下以下内容: objSample.Dispose(); objSample = null; 请注意,设置objSample=null只会清除变量的值;它对实际实例没有任何作用。还要注意,Dispos

只想知道objSample.dispose()等于objSample=null

事实上,我能从反汇编程序中得到这些问题的答案吗?怎么做


谢谢

不,处理对象并不意味着将对该对象的引用设置为空

Disposing是一种约定,在程序员需要时清理资源,而不是等到垃圾收集器决定启动时再清理

要回答您的问题,请写下以下内容:

objSample.Dispose();
objSample = null;

请注意,设置
objSample=null
只会清除变量的值;它对实际实例没有任何作用。还要注意,
Dispose()
不仅仅是垃圾收集的替代品。
IDisposable
接口与垃圾收集100%无关。@亚当:因此,通过objSample=null,我们清除了指向对象的变量的值。然后我们可以将该对象称为“孤儿”,因此G.C.“收集”它是一个不错的选择。是这样吗?当我们调用dispose方法时会发生什么?@odiseh:假设它是对该对象的唯一引用,那么是的,它将有资格进行垃圾收集。请注意,它并不保证永远被收集,它只是意味着它是合格的。至于调用
Dispose
时会发生什么,这取决于类
Dispose
不是一种特殊的方法,它只是
IDisposable
接口的一个成员。确切地说,调用
Dispose
时发生的情况是该类的
Dispose
方法中的任何代码。@odiseh:Dispose方法只需执行即可。它具体做什么取决于对象的类,因为实现该方法取决于类。按照惯例,它会立即释放对象可能持有的所有资源(例如,非托管内存、打开的文件句柄等),但对象实例本身占用的内存除外-对象无法控制这些资源,因此GC以后必须处理这些资源。@adam&@pavel,感谢进一步的解释。odiseh:Dispose只是用来表示:当您不再需要该对象时,最好调用Dispose。例如,对于与文件相关的对象,该文件可以被锁定并保持锁定,直到垃圾收集器开始工作(我们不知道何时),但当您调用dispose时,该对象将立即关闭该文件上的锁。