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

2021-06-29 07:19:05 字數 5388 閱讀 1344

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語句,求一個SQL語句

select from table name where 部門 工程部 and 經理簽字 0 and 行政簽字 0 and 結單 0 union all select from table name where 部門 工程部 and 經理簽字 1 and 行政簽字 0 and 結單 0 select...

sql語句求大神幫助,SQL查詢語句,求大神幫助!

大概明白你的意思。如果你的資料只有三層,並且只是你sql限定的這些資料好辦。select t3.mc,t2.mc t1.mc,t1.from select from sys zdinfo where plsh 2012070900000068 and plsh 2012070900000072 t1...

急求SQL語句方法,急求SQL語句方法

select convert char 2 month 訪問時間 convert char 2 day 訪問時間 的訪問量 convert char 10 count id 次的訪問量 from 表名 where 訪問時間 dateadd month,1,getdate group by 訪問時間 ...