我刚开始使用“使用”来确保无论发生什么情况都会处置资源。
下面是我为检索某些数据而编写的一些代码示例。我的问题是:
是否需要所有“使用”或仅仅拥有第一个?
SomeMethod()
{
using (SqlConnection cn = new SqlConnection("myConnection"))
{
cn.Open();
using (SqlCommand cmd = cn.CreateCommand())
{
cmd.CommandText = "myQuery";
using (SqlDataReader rdr = cmd.ExecuteReader())
{
if(rdr.HasRows)
{
while (rdr.Read())
// do something
}
}
}
}
}
答案 0 :(得分:4)
使用只不过是:
SomeClass o = null;
try
{
// managed resource that you use
o = new SomeClass();
// ... some other code here
}
finally
{
if(o != null)
o.Dispose();
}
在可能的情况下使用using
语句这一事实没有任何问题(类实现IDisposable
接口)。如果您想使用某些托管资源,那么使用:)
答案 1 :(得分:1)
所有"使用"需要还是仅仅拥有第一个?
如果您使用的任何对象正在实现IDisposable
,您可以使用using
语句,它将自动处理您的对象,或者您可以手动处理(关闭任何流等)您的对象没有using
,只需拨打Dispose()
。
因此,对于可以更好地处理的所有对象,请使用using
语句。