实现 IDisposable 接口的好处
-
可以通过调用 Dispose 方法,来显式的释放资源。
当托管对象不再使用时,垃圾回收器会自动释放分配给该对象的内存,不过进行垃圾回收的时间不可预知。而且,垃圾回收器对窗口句柄、打开的文件和流等非托管资源一无所知。
当不再需要某对象时,对象的使用者可以通过调用 Dispose 方法(垃圾回收器释放资源时也是调用该方法)来显式的释放托管和非托管资源。
- 实现了 IDisposable 接口的对象,可以用 using 语句来方便的释放资源。
using (TestObject testObject = new TestObject())
{
// 使用对象
}
看看上面的代码比使用 try/catch/finally 要简洁多:
TestObject testObject;
try
{
testObject = new TestObject();
// 使用对象
}
catch (Exception e)
{
// 处理异常
}
finally
{
testObject.Dispose();
}