c#object.Dispose()或object = null

VAA*_*AAA 3 .net c# dispose

嗨,我有一个对象是Disposable,我想知道什么是更好的:

this.object.Dispose();
Run Code Online (Sandbox Code Playgroud)

要么

this.object = null;
Run Code Online (Sandbox Code Playgroud)

要么

this.object.Dispose();
this.object = null;
Run Code Online (Sandbox Code Playgroud)

Hab*_*bib 12

Dispose更好的是,更好的方法是使用using块内的对象并让框架处理它.

对于:this.object.Dispose();vsthis.object = null;

将对象设置为null可能会导致未管理的资源被取消.完整的目标IDisposable是确保在使用后处理未管理的资源.

请参阅:IDisposable - MSDN

此接口的主要用途是释放非托管资源.当不再使用该对象时,垃圾收集器会自动释放分配给托管对象的内存.但是,无法预测垃圾收集何时发生.此外,垃圾收集器不了解非托管资源,例如窗口句柄,或打开文件和流.