簡體   English   中英

C#.NET使用塊

[英]C#.NET using block

我想在DAL層中使用“using”塊。 喜歡

using (SqlConnection con = new SqlConnection("connection string"))
{
     Command object
     Reader object
}

由於在使用塊中初始化的SqlConnection對象,我知道當控件退出使用塊作用域時,將自動處理此連接對象。

但我在使用塊內創建Command和Reader對象。 我是否必須明確地關閉它們,或者我必須為它們寫另一個“使用”塊。

您應該使用using命令和讀者一樣好,甚至明確地關閉它們。

我通常這樣編碼:

var sql = "SELECT * FROM table";
using (var cn = new SqlConnection(connectionString))
using (var cmd = new SqlCommand(sql, cn)) {
}

這限制了身份的數量。

您通常也會為那些編寫使用塊,即。

using (SqlConnection con = new SqlConnection("connection string"))
{
    con.Open();
    using (SqlCommand cmd = con.CreateCommand())
    {
        cmd.CommandText = "select * from table";
        using (SqlDataReader reader = cmd.ExecuteReader())
        {
            ...
        }
    }
}

值得為任何支持IDisposable接口的代碼編寫一個using塊。 通過這種方式,您可以確保盡可能地釋放任何稀缺資源。

您可以為實現IDispose任何項目using塊。 因此,您可以在連接塊內為每個嵌套using塊,以確保在使用后對它們進行適當處理。

如果您不喜歡使用連接和讀者,則應使用using()finally塊。 對於讀者來說,在閱讀器關閉之前,連接不會關閉。 另外我已經讀過, using()並不是100%保證連接將被關閉但我不知道背后的原因,因為它被轉換為try - finally塊並且將在任何條件下執行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM