作者Peruheru (还在想)
看板Visual_Basic
标题Re: [.NET] 关於使用New以及ArrayList
时间Tue Mar 31 16:26:50 2009
※ 引述《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
1F:→ Peruheru:勉强凑了几个数字下去测试,似乎是没问题 04/03 01:42