首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ReDim一个数组指针VB6

ReDim一个数组指针VB6
EN

Stack Overflow用户
提问于 2010-10-02 04:35:35
回答 3查看 1.6K关注 0票数 1

我正在尝试从一个不同的类ReDim一个成员对象数组。例如:

Class1.cls

代码语言:javascript
复制
Dim mStuffArray() As New clsStuff

Property Get StuffArray() As clsStuff()
    StuffArray = mStuffArray
End Property

Class2.cls

代码语言:javascript
复制
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的新手

戴夫

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-10-02 21:48:29

Redim不会制作数组的副本。

我认为4从get属性返回数组更有可能创建一个副本。文件不是很清楚。http://msdn.microsoft.com/en-us/library/aa261343(VS.60).aspx

使用公共成员变量会更简单。为什么不使用Collection而不是数组呢?

票数 3
EN

Stack Overflow用户

发布于 2010-10-02 04:51:13

我从未研究过数组,但如果我猜测一下,我认为当您使用ReDim时,它会创建现有数组的一个副本,并将tStuffArray更改为指向新副本。但是,pClass1.mStuffArray仍然引用旧的数组。

documentation for ReDim声明"ReDim创建一个新数组,复制现有数组中的所有元素“

我建议向Class1添加一个方法,该方法在私有mStuffArray变量上执行ReDim。

代码语言:javascript
复制
Dim mStuffArray() As New clsStuff

Property Get StuffArray() As clsStuff()
    StuffArray = mStuffArray
End Property

Sub Foo()
     ReDim mStuffArray(1 To 2)
End Sub

希望这能行得通。正如我所说的,我不是一个VB6程序员,所以我可能在这方面做得不够好。

票数 1
EN

Stack Overflow用户

发布于 2010-10-31 07:53:24

您可能还需要考虑Dictionary对象。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3842877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档