我应该使用几个嵌套的“使用”语句吗?

时间:2013-04-21 16:48:35

标签: c# sql dispose using

我想知道是否应该在另一个内部使用using语句? 例如:

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

    }
    ...
}

两种“使用”是否必要或者第一次使用时是否已完成处理?

2 个答案:

答案 0 :(得分:4)

您需要为要处置的每个对象使用using statement

我认为如果您知道using statement主要是syntactic sugar,那么您将会更好地理解这一点,这样会产生类似这样的内容:

myObject m = new myObjecyt()
try
{
   // Code here
}
finally
{
   m.Dispose();
}

在您目前的上下文中,可能需要处理单个使用块中包含的每个对象,但在许多其他上下文中,这种行为是不可取的。

答案 1 :(得分:1)

你需要两者,因为它们完全独立,每一个都处理自己的变量。如果您有多个连续的using语句,您也可以像这样写

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