0

我有一些代码,我使用数组来保存大量数据(有时超过 100 万个数据点),我使用数组是因为它们可以在 2 个方向上动态定义,并且能够在特定位置插入值。但是我发现,当我使用Redim更改数组的维度时,它会在 RAM 中创建数组的副本,导致我最终用完 RAM。我发现Erase可以用来删除数组并节省 RAM,然后我可以Redim用来创建一个新数组。然而,这意味着我同时没有地方保存我的数据,除非我创建第二个数组并手动复制数据。

有没有一种方法可以Redim在不丢失 RAM 的情况下创建一个数组,但使用一种更有效的方式来保存数据,而不是手动复制到一个新数组并再次返回。或者是否有另一个类可以用来保存数据,而不是满足上述要求的数组。

如果您想要一些示例代码,请索取示例代码。

非常感谢您的帮助

4

1 回答 1

1

以这种方式使用数组的内存效率不是很高。

你最好使用List(of T)看看这个答案的原因

在这种情况下,您可以使用一个类来保存每个数据点。使用 List(of T) 允许您插入到列表的中间,而无需创建整个数据的副本。

'Define your datapoint class
Private Class DataPoint
    Public Property X As Long
    Public Property Y As Long
    Public Sub New(ByVal X As Long, ByVal Y As Long)
        Me.X = X
        Me.Y = Y
    End Sub
End Class

'create and initialise the list
Dim MyDataPoints As New List(Of DataPoint)
'add some data to it
MyDataPoints.Add(New DataPoint(1, 2))
MyDataPoints.Add(New DataPoint(1, 2))
MyDataPoints.Add(New DataPoint(4, 3))
'Now insert a new datapoint at an arbitrary position in the list
MyDataPoints.Insert(2, New DataPoint(5, 6))
于 2012-11-08T08:45:47.590 回答