Dispose和null之間的區別非常有趣。
第壹
DataTable dt = new DataTable();
您必須知道dt在堆棧上,指向托管堆的新DataTable()對象。
且dt = null讓dt不指向任何對象。此時真正的對象new DataTable()還在內存中,等待GC回收(具體什麽時候回收是垃圾回收機制的問題)。
還有dt。dispose();銷毀新的數據表();這個對象,但是dt仍然指向這個被銷毀的對象的地址;所以此時dt不是null,但也不能用。
妳可以自己看看下面代碼的結果。
DataTable dt = new DataTable();
dt。dispose();
MessageBox。Show((dt == null)。ToString());
在實際開發中,壹般將dt設置為null就足夠了,可以等待GC恢復。如果要使用Dispose()方法,通常是
使用(DataTable dt = new DataTable())
{
}
這樣會隱式調用大括號末尾的Dispose()方法,dt壹變成局部變量就不在作用域內了,不會出現調用錯誤。