zoukankan      html  css  js  c++  java
  • 使用using释放资源

                                                 using关键字

     using 关键字可以用来导命名空间,与java中的import类似.

     我使用using的地方       

           using(SqlConnection con=new SplConnection(connString))
             {
              using(SqlCommand cmd=new SqlCommand(cmdTxt,con))  

    using的原理

       为什么出了using所在的{},会自动回收对象。

       原因是当我们将要出{},系统自动调用了Dispose()方法。

       而在DISpose方法中是这么实现的


     using语句的作用

          1.作为关键字,using可以导入命名空间.

          2.作为C#语句,using可以释放对象占用的内存资源.

    using语句的本质

       既然using可以释放对象,那么是不是在所有的对象前都可以用using来限制?  <不是> 

          原因如下:

             1.using可以主动释放的对象都需要实现IDisable借口.

             2.即使都实现了IDisable接口,也没有必要全部使用using.我们只对那些对系统性能有重要影响的对象进行using限定,而其他的对象可以交给垃圾回收器处理. 
      

    哪些对象才可以使用Using回收!

         必须实现了IDisposable 接口的类型才可以使用using回收!

    using回收的是托管还是非托管资源?

        解析:什么是托管:所有的C#代码都是被CLR监管,

         结论是using回收的是 非托管资源!

    Using释放的是托管资源还是非托管资源?

        解析:非托管,C#应用托管到.NET Framework.但是他可以释放非托管资源。


    Dispose方法会自动调用Close()

         要想让一个类型可以通过using管理,该类型或者父类必须实现了IDisposable接口。

    using(SqlConnection con=new SqlConnection)

    {

       //本质上自动调用了Dispose方法

    }

     close()和dispose()区别?

         解析:close()只是关闭连接,但是通道没有销毁,dispose()不仅把连接给关闭了,而且把通道也给销毁了。


      
      
      
      
      
      
      
      
      
     
     
     

     
     
      
      
      
      
      
      
      
      
      
      
      
      
     
     
     

  • 相关阅读:
    潘石屹出售上海外滩金融中心股权 4年没新增投资
    【BZOJ4036】【洛谷3175】【HAOI2015】—按位或(FMT+期望dp)
    信托配资清理“逃生通道”隐情
    中国在移动端的营销水平已超国外
    “土豪”们的新人生模型
    苏宁的逆市“O2O进化论”
    信汇中正领导力打造“必读12篇”之路
    你是否真的需要说声“谢谢”?
    新主管如何快速上手
    雷军和黄章又掐架了 不就是“不服跑个分”嘛
  • 原文地址:https://www.cnblogs.com/yangronglin/p/5473586.html
Copyright © 2011-2022 走看看