关于[C#资源回收和IDisposable接口的使用]的摘要:
在说资源回收之前先要说明托管资源和非托管资源。 1.托管资源由CLR来维护,自动进行垃圾回收,比如数组。 2.非托管资源不会进行自动垃圾回收,需要手动释放,比如句柄。但在C#中的非托管资源很多都被封装到.NET类中,当对象释放时内部方法同时释放非托管资源。 比如Socket连接,在.Net中被封装为Socket类,反编译Socket类库,看到创建连接对象时其实创建了一个句柄 但是当上层用户使用socket的时候并没有发现有过释放句柄的逻辑,这部分释放逻辑由谁完成的?我们继续反编译Socket的Close方法。