使用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()不僅把連接給關閉了,而且把通道也給銷毀了。


  
  
  
  
  
  
  
  
  
 
 
 

 
 
  
  
  
  
  
  
  
  
  
  
  
  
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM