【发布时间】:2013-04-21 16:48:34
【问题描述】:
我想知道是否应该在另一个语句中使用 using 语句? 例如:
using(SqlConnection con = new SqlConnection(...))
{
...
using(SqlCommand cmd = new SqlCommand(...))
{
}
...
}
这两个“使用”是否都是必要的,还是第一个使用完成后会丢弃所有东西?
【问题讨论】:
我想知道是否应该在另一个语句中使用 using 语句? 例如:
using(SqlConnection con = new SqlConnection(...))
{
...
using(SqlCommand cmd = new SqlCommand(...))
{
}
...
}
这两个“使用”是否都是必要的,还是第一个使用完成后会丢弃所有东西?
【问题讨论】:
您需要为要处理的每个对象使用using statement。
如果您知道using statement 主要是syntactic sugar,我认为您会更好地理解这一点,在引擎盖下会生成这样的东西:
myObject m = new myObjecyt()
try
{
// Code here
}
finally
{
m.Dispose();
}
在您当前的上下文中可能需要处理包含在单个 using 块中的每个对象,但在许多其他上下文中,这种行为是不可取的。
【讨论】:
using:StreamReader/StreamWriter 在大多数情况下会在处理读取器/写入器时处理其关联的流。虽然这样的代码不会导致泄漏,但当每个 IDisposable 对象都有 using 时,阅读代码会更好/更容易。
您需要两者,因为它们是完全独立的,每个都处理自己的变量。如果你有多个连续的 using 语句,你也可以这样写
using(SqlConnection con = new SqlConnection(...))
using(SqlCommand cmd = new SqlCommand(...))
{
...
}
【讨论】: