C#使用关键字,正确使用它

时间:2012-03-02 17:57:48

标签: c# asp.net .net clr

以下选项中的哪个更好

一个使用声明是否足够?

选项1:

using(SqlConnection con = new SqlConnection(constring))
{
   using(SqlCommand cmd = new SqlCommand())
   {
       .........................
       .........................
       .........................
   }
}

选项2:

using(SqlConnection con = new SqlConnection(constring))
{
   SqlCommand cmd = new SqlCommand();
   .........................
   .........................
   .........................
}

5 个答案:

答案 0 :(得分:15)

通常最简单的方法是遵循规则,“如果类型实现IDisposable,那么使用using构造。”所以我会选择某种形式的选项1.

答案 1 :(得分:9)

你需要把它们都包起来,虽然你可以让它看起来有点整洁,如果那困扰你的话!

using (var conn = new SqlConnection(/* ... */))
using (var cmd = new SqlCommand(/* ... */))
{
    // ...
}

答案 2 :(得分:2)

第一个肯定更好。

即使Connection和Command之间存在使外部足够的关系,您也不希望依赖它,或者希望读者知道。

此类关系始终未记录在案,并可能在将来的版本中发生变化。

答案 3 :(得分:1)

根据经验,这并不足以在每次实例化IDisposable时将其包含在一个使用块中。

答案 4 :(得分:1)

当你有多个时,最好使用两个使用命令(尽管有alternative syntaxes)。垃圾收集最好明确表示何时需要访问这些资源。