.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