求using語句的用法,求using語句的一個用法

時間 2021-06-29 07:19:21

1樓:匿名使用者

using 語句(c# 參考)

提供能確保正確使用 idisposable 物件的方便語法。

就拿你這段**來說

using(oledbconnection connection = new oledbconnection(connectionstring))

可以看到,在**中,只開啟了資料庫連線,而沒有呼叫connection.close()

但是因為 using 會確保正確使用 idisposable,那麼,在跳出using的時候,connection.dispose() 就會被正確的呼叫,所以可以不用呼叫connection.close()。

另一種情況,就是異常,using也能保證確保正確使用 idisposable。

using(oledbconnection connection = new oledbconnection(connectionstring))

在這種情況下,using也能保證connection以被正確的釋放。

按照規則,當使用 idisposable 物件時,應在 using 語句中宣告和例項化此物件。using 語句按照正確的方式呼叫物件上的 dispose 方法,並(在您按照前面所示方式使用它時)會導致在呼叫 dispose 時物件自身處於範圍之外。在 using 塊中,物件是隻讀的並且無法進行修改或重新分配。

using 語句確保呼叫 dispose,即使在呼叫物件上的方法時發生異常也是如此。通過將物件放入 try 塊中,並在呼叫 finally 塊中的 dispose,可以獲得相同的結果;實際上,這就是編譯器轉換 using 語句的方式。

可以將多個物件與 using 語句一起使用,但必須在 using 語句中宣告這些物件,如以下示例所示:

using (font font3 = new font("arial", 10.0f),

font4 = new font("arial", 10.0f))

可以例項化資源物件,然後將變數傳遞給 using 語句,但這不是最佳做法。在這種情況下,該物件將在控制權離開 using 塊之後保持在範圍內,即使它可能將不再具有對其非託管資源的訪問權也是如此。換句話說,再也不能完全初始化該物件。

如果試圖在 using 塊外部使用該物件,則可能導致引發異常。由於這個原因,通常最好是在 using 語句中例項化該物件並將其範圍限制在 using 塊中。

font font2 = new font("arial", 10.0f);

using (font2) // not recommended

// font2 is still in scope

// but the method call throws an exception

float f = font2.getheight();

2樓:

定義一個範圍,在範圍結束時處理物件。

當在{}中使用了類的例項,而希望無論因為什麼原因,只要離開了}就自動呼叫這個類例項的dispose。

比如connection 在}後就直接銷燬了,而不是等待gc自動**

3樓:堵秋陽

這個語句是.net應用程式連線資料庫做的一個,你是那個面的using裡面的是一個資料庫連線的引擎啊 !

而使用是時候要 connection.close();

但是用using的話 就可以不用那個關閉連線,系統會自動釋放,自動給你關掉的;

4樓:

釋放using語句裡的資源,前提條件:using語句裡面必須可以釋放資源

c#裡的using語句是什麼意思

5樓:依嵐軟體

使用using語句最終生成的其實是一個try, finally**塊,在finally**塊裡釋放資源。要求是:為 using 語句提供的物件必須實現 idisposable 介面。

此介面提供了 dispose 方法,該方法將釋放此物件的資源。

你的問題其實可以這樣解釋:

在using中其實開啟了一個資料庫連線,然後從資料庫中讀取了某些資料,最後不管讀取是否成功,都應該把這個資料庫連線關閉掉。

傳統的寫法應該是在try塊裡開啟連線並且讀取,在finally塊中把連線關閉掉,而由於你的sdr物件實現了idisposable介面,所以c#允許你用using語句來代替這種寫法,其實這就是一種語法糖,一種簡便寫法而已。

當程式執行完這個**塊(超出大括號的範圍)後,sdr就會被自動關閉掉。

6樓:華華兮

就對於你上面這句話而言,因為資料庫open之後,最後一定要close,即在**最後寫conn.close();但是用了using語句後,當執行完using語句中的**,退出using語句時,close()方法會自動幫你執行,把資料庫連線關閉。方便了**的書寫和以免程式設計師忘記關掉資料庫連線。

7樓:匿名使用者

using 引入名稱空間或者使用非託管資源其中引入名稱空間通俗的說

就是我們程式中最頂部的**

如:using system;

樓主取的例子應該是使用非託管資源,

我們一般使用的是託管資源,不用後系統會自動釋放記憶體,而有些我們自己定義的非託管資源就需要我們手動的去釋放空間

8樓:匿名使用者

c# 程式設計師參考

using 語句請參見

c# 關鍵字 | using 指令 | 實現 finalize 和 dispose 以清理非託管資源

using 語句定義一個範圍,在此範圍的末尾將處理物件。

using (expression | type identifier = initializer) statement

其中:expression

希望在退出 using 語句時呼叫 dispose 的表示式。

type

identifier 的型別。

identifier

type 型別的名稱或識別符號。定義一個以上 type 型別的 identifier 是可以的。在每一個 identifier = initializer 的前邊都有一個逗號。

initializer

建立物件的表示式。

statement

嵌入的語句或要執行的語句。

備註在 using 語句中建立一個例項,確保退出 using 語句時在物件上呼叫 dispose。當到達 using 語句的末尾,或者如果在語句結束之前引發異常並且控制離開語句塊,都可以退出 using 語句。

例項化的物件必須實現 system.idisposable 介面。

9樓:匿名使用者

2樓找到資料對的,你要知道像檔案,資料庫連線這些是非託管資源.net不會自動去釋放他們,一般需要你手動關閉。當使用using時,如果物件實現了system.

idisposable介面,他就會在使用完釋放掉。

10樓:匿名使用者

相當於區域性變數,在{}的物件會自動釋放

不用呼叫相關的dispose()方法

關於c#中using的用法

11樓:200是我的

using 語句定義一個範圍,在此範圍的末尾將處理物件。

using (expression | type identifier = initializer) statement

其中:expression

希望在退出 using 語句時呼叫 dispose 的表示式。

type

identifier 的型別。

identifier

type 型別的名稱或識別符號。定義一個以上 type 型別的 identifier 是可以的。在每一個 identifier = initializer 的前邊都有一個逗號。

initializer

建立物件的表示式。

statement

嵌入的語句或要執行的語句。

備註在 using 語句中建立一個例項,確保退出 using 語句時在物件上呼叫 dispose。當到達 using 語句的末尾,或者如果在語句結束之前引發異常並且控制離開語句塊,都可以退出 using 語句。

例項化的物件必須實現 system.idisposable 介面。

示例// cs_using_statement.cs

// compile with /reference:system.drawing.dll

using system.drawing;

class a

// compiler will call dispose on myfont and myfont2

font myfont3 = new font("arial", 10.0f);

using (myfont3)

// compiler will call dispose on myfont3}}

12樓:匿名使用者

定義一個範圍,將在此範圍之外釋放一個或多個物件。

using 語句提供的物件必須實現 idisposable 介面

13樓:匿名使用者

回答者:200是我的 - 經理 五級 11正解

14樓:匿名使用者

讀檔案的資料流.具體的用法你上網找找吧!

15樓:幸玉芬愈戊

using語句,定義一個範圍,在範圍結束時處理物件。

場景:當在某個**段中使用了類的例項,而希望無論因為什麼原因,只要離開了這個**段就自動呼叫這個類例項的dispose。

要達到這樣的目的,用try...catch來捕捉異常也是可以的,但用using也很方便。

例如:using

(class1

cls1

=new

class1(),

cls2

=new

class1())

//call

thedispose

oncls1

andcls2

但是它不會自動釋放括號語句塊裡面的其它生成的物件所以在using

裡面的stream

reader

這兩個不會在執行到

using

外後自動釋放

net面試題:c#中的using語句有什麼作用

16樓:—邪影

1、using 匯入名稱空間

2、手動釋放在語句塊內的物件記憶體,儘管 clr有自動釋放機制,gc自動**,但這並不是確定性的,所以你需要更精準的釋放,就使用using公

求sql查詢語句between用法

between 操作符用於選取介於兩個值之間的資料範圍內的值。between 操作符選取介於兩個值之間的資料範圍內的值。這些值可以是數值 文字或者日期。具體用法參考 from 樹懶學堂 sql語句中 between and 1 between 操作符在 where 子句中使用,作用是選取介於兩個值之...

求經典語句,求經典語句

師惠 1。錯過的太多,結局太心痛 梁靜茹 2。也許遺憾和年輕總綁在一起 梁靜茹 3。往往,心中最愛的那個人,最後卻離自己最遠 蕭亞軒 4。錯過的本來就不是你的 陶晶瑩 5。錯過的應該就是要忘記 宋欣妮 6。如何掉眼淚,自知身份都不對 鄭秀文 7。想這樣的自己好愚蠢,但哪個女人不天真 方皓文 8。如果...

sql語句求優化,聽說NOT IN語句不好求優化

阿冬 還要注意是在哪一種資料庫管理系統中,有些就不支援minus,不過not exists應該都支援。 一支紅纓槍 select name from test1 a where not exists select from test2 b where b.name admin and b.name ...