看板 Visual_Basic 關於我們 聯絡資訊
※ 引述《Peruheru (還在想)》之銘言: : 請輸入專案類型(網站專案或者應用程式專案):應用程式專案 : 我正在寫的東西,需要動態創造一大堆物件 : 隨著我要讀入的Excel(還沒寫)裡面的值不同 : 要創出來的數量也不同 : 而且我會需要把所有還沒在這一輪被系統消化掉的物件 : 通通保留下來,因為它們會成為下一次執行時的影響物件 : 物件是我自己定義的類別所產生,裡面主要只有包含這個物件的識別資料 : 我的做法是 : 每次讀入Excel的值以後 : 用迴圈創造出所有需要的物件(因為流程性質的關係,我不想直接做成陣列) : 創完以後,我定義了一個ArrayList,負責儲存所有在此次時間點中創出的物件 : 然後再用另一個ArrayList儲存所有時間點內的資料 : 但是因為這東西對我來說有點複雜 : 而且我又沒辦法測試這個程式(因為這是別人的委託,我也不曉得輸出該有的樣子) : 所以我想請問一下,上面這個做法有沒有問題呢? : 我主要是擔心,創造出來的物件,其存活時間的問題 : 存入ArrayList後,是否能保證在這個Class存活的期間 : 我所宣告的所有物件,除了我刻意丟棄的以外,都能保留下來? : 另外其實我也不知道怎麼樣才是真正丟棄宣告出來的物件 : 只要在離開宣告他的程式區段時 : 它沒有被保留在任何其他物件內,就可以了嗎? : 或是有其他的做法呢? : 目前寫起來感覺是還算通順,問題就是感覺很不踏實 : 不知道會不會在某個以為沒問題的環點出問題.... 為求保險,我實際寫一下我是怎麼做得好了 Public Class XXXclass Private TimeArr As New ArrayList Private Arr As New ArrayList ... ... Public Function XXX(ByVal xx As Integer) As XClass ^^ 假定這是我要創造的元件數量 ..... ..... For count As Integer = 0 To xx Dim MyObj As MyObjClass MyObj = New MyObjClass MyObj.id = count .... Arr.Add(MyObj) Next TimeArr.Add(Arr) .... .... Return XObj End Function ... ... End Class 像這樣的感覺(概念上一樣,不過我寫的東西更多些) 因為如果是以宣告層級來說 我並沒有在Class的全域變數那邊宣告MyObj這個物件 是直到需要創造時才定義出這個物件 我有在外圍宣告的只有包裝這個物件的兩層ArrayList物件 現在就是擔心,會不會只有當次執行創造出來的物件,才能夠使用 如同推文所說,MyObj這個物件我宣告的層級只有在Function內的For迴圈裡 會這麼做是因為我認為MyObj每次時間點上所創造的都應該要是不同的東西 但是又要能保留到下次執行,才想試著使用ArrayList(我是第一次使用) 在這種情況下,ArrayList有辦法幫我保留我創造的那些MyObj物件群嗎? 我很擔心到時候調閱ArrayList時會發現只剩下這個時間點上創的東西 這個程式本身是一個功能 但是它卻不完整,它要能多次執行,我還需要寫另外一個搭配它的程式 我擔心到時候出問題我會找不到問題在哪 所以想先解決這個疑惑,如果這樣做下去沒問題我才能安心繼續做下去 不然到時候發展得太複雜,期限也快到了,我怕沒時間除錯 而且我在另外一個程式也許也會需要使用同樣的做法 所以希望能在現在搞清楚這個問題 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 192.192.154.54
Peruheru:勉強湊了幾個數字下去測試,似乎是沒問題 04/03 01:42