日期:2014-05-18  浏览次数:20790 次

using关于即使释放资源的用法疑问
问题就是,具体是什么时候释放资源?

C# code

DataTable dt;
using (dt = new DataTable())
{
    dt.Columns.Add("ID");
    DataRow dr = dt.NewRow();
    dr["ID"] = "name";
    dt.Rows.Add(dr);
}
int i = dt.Rows.Count;



这个i依然有值。

------解决方案--------------------
对象Dispose后仍然可以访问到它。但是这么做是危险的和绝对不允许的。
------解决方案--------------------
using (dt = new DataTable())
{

} <----到了这个括号就会调用 using里面那个对象的IDispose接口的Dispose方法。

其实是只要出using的作用域就会调用Dispose,包括异常。

这并不是真正的释放,而是调用Dispose而已。