2010-05-31 157 views

回答

13
new SqlConnection(connectionString) 

根據提供的連接字符串創建新的SqlConnection實例。

SqlConnection cn = ... 

其分配給新的局部變量cn(作用域到using語句),其保持所構造的連接對象。

using(...) 

是一個using聲明 - 它保證了連接末Dispose() -d,即使有異常拋出(在這種情況下Dispose()手段將其關閉/釋放到池等)

整個代碼是本質

{ // this { } scope is to limit the "cn" 
    SqlConnection cn = new SqlConnection(connectionString); 
    try { // the body of the using block 
     ... 
    } finally { // dispose if not null 
     if(cn != null) { cn.Dispose(); } 
    } 
} 
2

可以確保SqlConnection的是在「使用」範圍

4

它排除了SqlConnection不是不再需要它後結束時被銷燬。在這種情況下,SqlConnection可能會留下一些非託管資源,您應該清理它們。 SqlConnection執行IDisposable,這意味着您可以(應該)在完成使用後調用Dispose

它基本上是一個速記:

try { 
    SqlConnection cn = new SqlConnection(connectionString); 

    // whatever other code 
} 
finally { 
    if (cn != null) 
    { 
     cn.Dispose(); 
    } 
} 

當您使用usingcn範圍也擴大外try(以finally)。

如果您想了解更多信息,請查看MSDN's article關於此主題。

+3

嚴格來說,cn的範圍是*外部* try#... – 2010-05-31 07:56:15

+0

謝謝Marc。爲更大的利益編輯。 – 2010-05-31 08:04:36

1

using語句可以應用於實現接口IDisposable的對象。 在使用範圍的末尾,在對象上調用Dispose。

0

這確保在控制離開使用(){..}子句時釋放連接。

由於異常,函數返回,從循環中斷,轉到或正常離開作用域,可能會發生離開。很方便。