GC中,对没有引用的地址会进行回收,但其实,MSDN中是这么解释CLOSE函数的
Close 方法可关闭远程主机连接,并释放所有与 Socket 关联的托管资源和非托管资源。关闭后,Connected 属性将设置为 false。
其实调用CLOSE已经可以实现对此类的垃圾回收机制,不必要再=null。但是其实这是一个好习惯,但你自己写的类,没有继承IDISPOSE方法的时候,=null很关键,尽快的垃圾回收,就是尽快的释放系统资源
这个不需要管别人怎么写!我们可以借阅微软的写法!微软怎么写!我们就怎么写!这样一般不会出错!效率也会更高
尽早将对象设置为null,可以方便在垃圾回收器回收时直接回收掉为null变量先前引用的对象,这样有利于内存的尽早释放。
同意@滴答的雨的,尽早回收资源,减少内存占用,也是增加程序性能的必要处理.
估计是早期c/c++沿用过来的写法,C#中不需要这样
如果 socket = null; 后面还有一大堆代码在执行的话,可能有方便到垃圾回收,但是做好封装后 socket.Cose(); 一般都会在离方法底部比较近的地方,当方法执行完成后,变量就会被释放; socket = null; 就没有意义了
这是我的理解,如有不对,请指出。
便于回收