void Method()
{
????????? MyClass x = new? MyClass();
}
MyClass是我自己定義的類,我在此實例化了一個對象,指針存x,實際的對象在堆內(nèi),當(dāng)我在其他地方想再訪問這個對象時怎么訪問?? 因為?? 出了Method函數(shù)? 那么指針x應(yīng)該就被釋放了,還有那么實際的對象? 是什么時候會被回收。如何接著訪問那個對象,多謝謝
急急急!
10 回答

qq_笑_17
TA貢獻1818條經(jīng)驗 獲得超7個贊
問題的關(guān)鍵是方法是在線程棧中執(zhí)行的,而你的對象指針并沒有通過線程棧傳遞到另一個方法中,你創(chuàng)建的對象即使CLR還沒有進行回收,也就是說還在內(nèi)存中,但是你的代碼并不知道對象的地址是什么,對嗎?
所以要解決有兩個辦法:一參數(shù)傳遞給另一個方法,二 用一個靜態(tài)的字段持有住你對象的引用..比如一個類中定義一個靜態(tài)的集合字段,你的對象添加進去.因為靜態(tài)字段屬于類型,而類型的地址在CLR看來是加載了類型后,就不會改變的,除非AppDomain被卸載.

達令說
TA貢獻1821條經(jīng)驗 獲得超6個贊
哦,多謝您??墒俏? 生成的對象是當(dāng)我點擊按鈕是動態(tài)生成的,不能提前定義啊。而且是每點擊一次都生成一個對象的。
怎么辦?
- 10 回答
- 0 關(guān)注
- 437 瀏覽
添加回答
舉報
0/150
提交
取消