當前位置:成語大全網 - 漢語詞典 - DataTable的dispose();。clear();= null三者有什麽區別,怎麽做,資源最少

DataTable的dispose();。clear();= null三者有什麽區別,怎麽做,資源最少

的比較。Clear()是沒有意義的,因為它只是清空了DataTable,內存還是在堆中分配的。壹般也是Close()方法來比較,但是DataTable沒有這個方法。

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壹變成局部變量就不在作用域內了,不會出現調用錯誤。