IDisposable接口的主要用途
  可能重复: 
  正确使用IDisposable接口 
“IDisposable接口”文章讲述:
该接口的主要用途是释放非托管资源
为什么? 为什么只有非托管?
整个我的生活,我认为它的PRIMIRALY使用是释放任何资源:托管(连接数据库,服务代理等)和非托管(如果他们在应用程序中使用)。
PS
我相信这个主题已经有问题了,但是找不到它们。
  数据库的底层连接不受管理,文件句柄和许多其他低级别的o / s对象也是如此。  他们是非托管的。  实现一个IDisposable接口意味着你不仅仅依靠垃圾收集器来释放这些资源;  但是您正在使用您可用的低级API来关闭这些资源。 
  另外,我认为Eric Lippert的回答(第二个回答)对于类似的问题,对于您使用IDisposable原因很好解释。 
如果你进一步阅读,有一个解释:
当垃圾收集器不再使用时,垃圾收集器会自动释放分配给管理对象的内存。 但是,无法预测垃圾收集何时发生。 此外,垃圾收集器不知道非托管资源,如窗口句柄或打开的文件和流。
  垃圾收集器需要关心被管理的资源。  这就是他们被managed 。 
另外,您示例中的连接资源不是托管资源。 .NET连接类包装非托管资源。
  IDisposable.Dispose()负责两件事情: 
Dispose()处理对象拥有的其他IDisposable 