我正在尝试从一个不同的类ReDim一个成员对象数组。例如:
Class1.cls
Dim mStuffArray() As New clsStuff
Property Get StuffArray() As clsStuff()
StuffArray = mStuffArray
End PropertyClass2.cls
Private Sub Foo(ByRef pClass1 As Class1)
Dim tStuffArray() As clsStuff
tStuffArray = pClass1.StuffArray
ReDim tStuffArray(1 To 2)
End Private这里的问题是Foo似乎没有在Class1中重定向成员mStuffArray。知道我做错了什么吗?如果我的VB6看起来很奇怪,或者命名约定不是标准的,请原谅我,我不得不深入研究一些旧的遗留代码,并且是VB6的新手
戴夫
发布于 2010-10-02 21:48:29
Redim不会制作数组的副本。
我认为4从get属性返回数组更有可能创建一个副本。文件不是很清楚。http://msdn.microsoft.com/en-us/library/aa261343(VS.60).aspx
使用公共成员变量会更简单。为什么不使用Collection而不是数组呢?
发布于 2010-10-02 04:51:13
我从未研究过数组,但如果我猜测一下,我认为当您使用ReDim时,它会创建现有数组的一个副本,并将tStuffArray更改为指向新副本。但是,pClass1.mStuffArray仍然引用旧的数组。
documentation for ReDim声明"ReDim创建一个新数组,复制现有数组中的所有元素“
我建议向Class1添加一个方法,该方法在私有mStuffArray变量上执行ReDim。
Dim mStuffArray() As New clsStuff
Property Get StuffArray() As clsStuff()
StuffArray = mStuffArray
End Property
Sub Foo()
ReDim mStuffArray(1 To 2)
End Sub希望这能行得通。正如我所说的,我不是一个VB6程序员,所以我可能在这方面做得不够好。
发布于 2010-10-31 07:53:24
您可能还需要考虑Dictionary对象。
https://stackoverflow.com/questions/3842877
复制相似问题