用于处置资源

时间:2015-08-14 10:57:09

标签: c# .net

我刚开始使用“使用”来确保无论发生什么情况都会处置资源。

下面是我为检索某些数据而编写的一些代码示例。我的问题是:

是否需要所有“使用”或仅仅拥有第一个?

        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
                        }
                    }
                }
            }
        }

2 个答案:

答案 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语句。