小白問題:
我在form1定義了一個全域型別 變數
public class A {}
public A b;
然后在程式里幾次用到
b=new A();->裝載一個a檔案
后面又一次
b=new A();->裝載一個b檔案
到這一次的時候,上面的那個A實體是被系統自動回收了么?望指教
uj5u.com熱心網友回復:
回收是對object的操作,不是對class的操作。b=new A(); 執行2次,b對象不是還在麼, 回收誰?儅b=null的時候,b才會被回收,而且C#有自己的回收機制,雖然可以手動System.GC.Collect();用不好反而會讓程式運行變得更慢而已。
uj5u.com熱心網友回復:
具體是這樣,我有一個list<A>在dgv,T是中存盤了一個不同路徑的檔案我定義了一個publc A CurrentObject,
選中List 第3行,我用CurrentObject=new A();來執行不同的操作。
那我點選5行時,還想用CurrentObject=new A();就是第二個了。
那么上一次3行的new A()物件會被銷毀么?
我點選回3行,會再重新生成一次。
uj5u.com熱心網友回復:
應該是會的,因為沒有參考了,但是什么時候回收,由系統自己判斷。uj5u.com熱心網友回復:
沒有被參考的物件,系統會回收,但是什么時候回收不能保證,再次 b = new A() 的時候,b原來參考的物件就不再被參考了uj5u.com熱心網友回復:
所以我不回答到底會不會銷毀。這個需要你自己回答,到底你還有沒有其他地方占用他,沒有占用Gc會擇機釋放,有占用gc哪敢亂釋放
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/279474.html
標籤:C#
