.Clear()不能随便用
.Clear()的比较没有什么意思,由于只是把DataTable清空而已,在堆中任然分配内存,通常要比较也是比较Close()方法,不过DataTable没有这个方法
至于Dispose和null的区别就颇有意思了
首先
DataTable dt = new DataTable();
你的知道dt在栈上,指向托管堆的 new DataTable()对象
而dt = null;的意思是让 dt不指向任何对象,此时 new DataTable()这个真实的对象还在内存中,等待GC的回收(究竟何时回收是垃圾回收机制的问题)
而dt.Dispose();的意思是销毁 new DataTable();这个对象,但dt仍然指向这个被销毁的对象的地址;因此此时dt是不为null的,但它也没法使用
本身能够看下下面代码的结果
DataTable dt = new DataTable();
dt.Dispose();
MessageBox.Show((dt == null).ToString());
在实际开发中,通常将 dt设置为null就足够了,能够等待GC的回收。若是要使用Dispose()方法,通常是
using(DataTable dt = new DataTable())
{
}
这样会在大括号结束的时候隐式地调用 Dispose()方法,并且dt成为一个局部变量立刻出了做用域,也不会有调用错误
http://zhidao.baidu.com/link?url=a647DjThstaBNE88PdRfcBcSwLaaucaJrcdEB_JXyMhNlBOX3sDe1GTSkT_I6IZITJ55flUwKI53_KncPJ4S1a