1

我想知道如何在 vB.NET 中为数组中的索引设置无限索引(限制)我通常必须指定数组每个维度中的最大项目数,但是当我不知道有多少时(假设是一个ID字段),会在那里,我不想浪费数据。

所以我想而不是写

Dim storage(0 To 1000, 0 To 3, 0 To 5) As String

写这样的东西(其中*表示无限),分别保持其他限制:

Dim storage(*, 0 To 3, 0 To 5) As String

那么我可以添加这样的项目:

storage(123456,3,5) = "abcdefgh"
4

2 回答 2

6

请不要这样做 :) 根据需要动态调整数组大小会造成不必要的混乱。多维数组也不必要地令人困惑。因此,动态地重新调整多维数组的大小是不必要的痛苦。

当数组的大小是动态的时,不要使用数组。使用 aCollection代替,例如List(Of T)类。与其使用多个维度,不如创建一个自定义类来定义列表包含的对象,例如:

Public Class Person
    Public Property ID As String
    Public Property PhoneNumbers As New List(Of PhoneNumber) 
End Class

Public Class PhoneNumber
    Public Property Number As String
    Public Property Description As String
End Class

然后,您可以定义动态人员列表,如下所示:

Dim people As New List(Of Person)

您可以向一个人添加任意数量的电话号码,如下所示:

Dim person As New Person()
Dim phone As New PhoneNumber()
phone.Number = "123-123-1234"
person.PhoneNumbers.Add(phone)

Dim phone2 = New PhoneNumber()
phone2.Number = "123-123-4567"
person.PhoneNumbers.Add(phone2)

同样,您可以添加多个人,如下所示:

Dim person2 As New Person()
' ...
people.Add(person)

Dim person2 As New Person()
' ...
people.Add(person2)
于 2013-02-19T21:12:23.030 回答
1

正如另一个答案所暗示的那样,这不是首选解决方案,但要回答您的问题,您可以ReDim Preserve根据需要使用来增加第一等级的大小:

If UBound(storage, 1) < currentIndex Then
    ReDim Preserve storage(currentIndex, 3, 5)
End If

storage(currentIndex, 3, 5) = "abcdefgh"
于 2013-02-23T02:13:21.650 回答