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