一般情况下两种都行
各有优缺点,据我测试,null可以迅速销毁对象而dispose则可以同时实现数据库廉洁的关闭等

解决方案 »

  1.   

    不行的,close后仍然不能bind原已经bind的端口
      

  2.   

    在调用 Close 之前,该应用程序应调用 Shutdown,以确保在 Socket 关闭之前已发送或接收所有挂起的数据。
    ___________________________________
    too simple,sometimes naive :()
    ___________________________________
      

  3.   

    sock.dispose(); / sock=null;
    都可以解除对对象的引用,但不释放内存。
    .NET 的Managed Code中无用来释放某一对象内存的关键字。释放内存由GC(garbage collection垃圾回收站)不定期进行。
    通过GC.Collect()可以强制进行,但相当耗时。注意:GC只能释放Managed(被管理的)对象。对于UnManaged(非被管理)对象必须在Finalization 中进行人为释放.
    建议看一下《程序员大本营3.0——.NET专刊》 第20页 3.1.3 GC
    可以对GC有个初步了解。