一次更改 VB.NET 中数组的结构成员的数组大小

Change the array size of a structure's member for an array in VB.NET at one time

提问人:John Jin 提问时间:8/31/2023 最后编辑:John Jin 更新时间:8/31/2023 访问量:42

问:

这是我的结构:

Public Structure Plant
    Public Position() As Double
    Dim Cost As Double
    Dim Seed As Double
End Structure

在将阵列连接到阵列后,我需要更改阵列的大小。Position

Dim Population(10) As Plant

如果我想更改数组的大小,我应该为每个 Population 数量定义每个数组。Position

例如:

    ReDim Population(0).Position(9)
    ReDim Population(1).Position(9)

但是,关于在我们的程序中变量的所有成员都具有相同的大小 (9) 这一事实,有没有最简单的方法可以将 1 的大小分配给 Population 和位置变量的所有成员?而不是使用循环,例如PopulationPosition

for i=0 to 10
        ReDim Population(i).Position(9)
next i

我将结构定义更改为

   Public Structure Plant
        Public Position() As Double
        Dim Cost As Double
        Dim Seed As Double

        Private Sub New(ByVal VariableSize As Integer)
            ReDim Position(VariableSize)
        End Sub
    End Structure

并定义了这个变量:

 Dim Population(Npop0) As Plant = New Plant(9)

但是我遇到了这个错误

对于使用显式边界声明的数组,不允许显式初始化

数组 vb.net 结构

评论

1赞 Damien_The_Unbeliever 8/31/2023
如今,数组很少是正确的集合类型,除非您自己实际实现集合类型。有很多集合类型可供选择,只有一种数组非常奇怪,以至于具有固定长度但可变的内容。
0赞 John Jin 8/31/2023
谢谢,我需要编写一个不支持不同库的旧 VBA 程序,我需要先在 VB.NET 中测试我的代码,我需要使用数组。
0赞 jmcilhinney 8/31/2023
你在那里问了两个不相关的问题。在这种情况下,您需要单独发布它们。该错误消息与如何调整数组大小无关,因此,如果您想知道如何解决该问题,请发布一个单独的问题。
0赞 Craig 9/1/2023
我认为编译器可能会感到困惑,因为您的声明可能用于具有特定边界的数组,或者它可能正在调用构造函数。如果对它使用显式参数名称,会发生什么,即?... = New Plant(VariableSize:=9)
0赞 Craig 9/1/2023
我还建议考虑更改为 .NET。和 之间存在重要的行为差异。作为一般规则,a 中的所有内容都应该是不可变的(只读且在构造时是固定的),否则由于更改 s 时制作临时副本的规则,您可能会获得难以推理的行为。ClassClassStructureStructureStructure

答: 暂无答案