在使用数据库连接的时候,经常要用Using语句来释放资源。但是像我这样刚从VB转过来的人根本不知道要这么写,以为close了连接九行了。问题来了----什么情况下要用Using语句来释放资源?是有规则的,还是完全是特例的? 

解决方案 »

  1.   

    有啊 你要using的对象实现了IDispose接口的。
      

  2.   

    什么情况都可以使用也可以不使用
    using只提供了一个自动、方便的语法
    没人规定你要这么做
      

  3.   

    要用using释放资源的类要实现IDisposable接口,或者不用using的话,要调用Dispose方法,效果和using是一样的
      

  4.   

    当有消耗大量资源或者宝贵资源的对象的时候
    你需要告诉垃圾回收机制,在使用完对象马上调用对象的dispose()方法将对象占用的资源马上释放掉
      

  5.   

    Close 和 Dispose 在功能上等效。若要确保连接始终关闭,请在 using 块内部打开连接,如下面的代码段所示。这样可确保在代码退出代码块时自动关闭连接。 http://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqlconnection(VS.80).aspx自己去MSDN看看吧,没说一定要用using!
      

  6.   

    呵呵,Close 和 Dispose 在功能上等效。功能上不等效的
      

  7.   

    使用using的话,离开该段是Dispose会被自动调用,有点类似try
    {
    }
    finally
    {
      o.Dispose();
    }
    这样的好处是非托管资源立即会被释放(托管资源则不会)。即使你不用using,也不手动调用Dispose,.NET CLR会保证通过调用Finalize回收非托管资源。当然,这意味着多费一些时间,而且如果对象没有很好的实现Dispose模式的话,还可能会造成非托管资源泄漏。
      

  8.   

    非托管资源是程序不自动断开连接的资源,也可以这样理解,你创建的对像能调用Dispose方法都可以用using释放资源,这样的资源就称作非托管资源,而托管资源是运行后系统能自动释放的,如string,int等这些资源系统都能够自动清理的,不用手动释放!