深入理解using

2022-03-07 06:18:24 字數 1041 閱讀 4039

string connstr = string.empty;

sqlconnection conn = null;

//using 語句示例

using (sqlconnection conn = new sqlconnection(connstr))

//try/finally塊

tryfinally

誤區:(1)對沒有實現idisposable()介面的物件使用using語句。

例子://object物件沒有實現idisposeable介面

using (object obj = factory.createresource())

//修正版本

object obj=factory.createresource();

using (obj as idsposeable)

如果沒有實現idisopose介面,在上面的情況下,using語句退化為using(null),這種做法非常的安全,只是不會做任何的事情。

(2) 潛在的資源洩漏

sqlconnection conn=new sqlconnection(connstr);

sqlcommand cmd=new sqlcommand(cmdstr,conn);

using(conn as idisposeable)

using (cmd as idisposeable)

確保任何實現了idisposeable()介面的物件都在using和try塊中分配,否則有可能出現記憶體洩漏。

乙個方法中有多個需要釋放的資源的物件時,可以建立多個using塊,或者自己寫乙個try/finally塊,兩種方法是等效的,產生的il**是完全一樣的。

有些物件既實現了dispose()又實現了close()。

dispose()除了釋放資源外,還會通知垃圾**器這個物件不再需要終結操作。dispose()通過gc.suppressfinaize()方法來實現這一點,close()一般不會這麼做。因此呼叫過close()的物件仍然留在終結佇列中,dispose()不會將物件從記憶體中刪除,它只是讓物件釋放非託管資源。

深入理解C語言 深入理解指標

關於指標,其是c語言的重點,c語言學的好壞,其實就是指標學的好壞。其實指標並不複雜,學習指標,要正確的理解指標。指標也是一種變數,占有記憶體空間,用來儲存記憶體位址 指標就是告訴編譯器,開闢4個位元組的儲存空間 32位系統 無論是幾級指標都是一樣的 p操作記憶體 在指標宣告時,號表示所宣告的變數為指...

mysql 索引深入理解 深入理解MySql的索引

為什麼索引能提高查詢速度 先從 mysql的基本儲存結構說起 mysql的基本儲存結構是頁 記錄都存在頁裡邊 各個資料頁可以組成乙個雙向鍊錶每個資料頁中的記錄又可以組成乙個單向鍊錶 每個資料頁都會為儲存在它裡邊兒的記錄生成乙個頁目錄,在通過主鍵查詢某條記錄的時候可以在頁目錄中使用二分法快速定位到對應...

深入理解C語言 深入理解指標

關於指標,其是c語言的重點,c語言學的好壞,其實就是指標學的好壞。其實指標並不複雜,學習指標,要正確的理解指標。指標也是一種變數,占有記憶體空間,用來儲存記憶體位址 指標就是告訴編譯器,開闢4個位元組的儲存空間 32位系統 無論是幾級指標都是一樣的 p操作記憶體 在指標宣告時,號表示所宣告的變數為指...