我阅读了几篇关于 using 语句的文章,试图了解何时应该使用它。听起来大多数人认为应该尽可能多地使用它,因为它可以保证处理未使用的对象。
问题是所有的例子总是这样显示:
using (SqlCommand scmFetch = new SqlCommand())
{
// code
}
这是有道理的,但它只是一小段代码。在数据库上执行查询时我应该做什么?所有步骤是什么?它看起来像这样吗:
string sQuery = @"
SELECT [ID], [Description]
FROM [Zones]
ORDER BY [Description] ";
DataTable dtZones = new DataTable("Zones");
using (SqlConnection scnFetchZones = new SqlConnection())
{
scnFetchZones.ConnectionString = __sConnectionString;
scnFetchZones.Open();
using (SqlCommand scmdFetchZones = new SqlCommand())
{
scmdFetchZones.Connection = scnFetchZones;
scmdFetchZones.CommandText = sQuery;
using (SqlDataAdapter sdaFetch = new SqlDataAdapter())
{
sdaFetch.SelectCommand = scmdFetchZones;
sdaFetch.Fill(dtZones);
}
}
if (scnFetchZones.State == ConnectionState.Open)
scnFetchZones.Close();
}
我想知道的是:
• 是否可以使用 4、5、10 个嵌套的 using 语句来确保所有对象都被释放?
• 我在什么时候做错了什么,我应该考虑修改吗?
• 如果由于嵌套 using 语句太多而需要修改,我有什么选择?
您最终可能会得到一个令人生畏的层次结构,但您的代码应该非常高效,对吧?或者,例如,您是否应该只将 SqlDataAdapter
对象放在 using 语句中,它会以某种方式确保所有其他对象也得到处理?
谢谢。
最佳答案
拥有许多嵌套的 using 语句是完全有效的:
using(A a = new A())
using(B b = new B())
{
a.SomeMethod(b);
}
关于c# - 试图更好地理解 'using' 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8133182/