强类型多维数组/集合

时间:2012-06-08 18:15:02

标签: vb.net multidimensional-array strongly-typed-dataset

我想创建一个包含数据库中以下值的强类型多维数组或集合:

  • FileName(As String)
  • FileSize(整数)

要求:

  • 可通过索引访问(例如Arr(i)(j),Arr.Row(i)等)
  • 高效(即快速和非资源密集型)
  • 轻松操作,添加,追加等
  • .NET 3.5兼容

感谢大家的精彩回答。这就是我选择的......:)

Structure FileRecord
    Dim Name As String
    Dim Size As Integer

    Sub New(ByVal FileName As String, ByVal FileSize As Integer)
        Me.Name = FileName
        Me.Size = FileSize
    End Sub
    Sub New(ByVal Files() As FileRecord)
        For Each f As FileRecord In Files
            Dim fr As New FileRecord(f.Name, f.Size)
        Next
    End Sub
End Structure

4 个答案:

答案 0 :(得分:4)

您不能拥有包含两种不同类型的多维数组。

相反,您通常会制作包含数据的自定义类的单维数组(或List(Of T))。

在您的情况下,您可能需要以下内容:

Public Class FileRecord
    Public Property Name As String
    Public Property Size as Integer
End Class

然后,设置List(Of FileRecord)来保存您的数据。然后,您可以将其作为:

进行访问
Dim nameAtIndex = theList(i).Name
Dim sizeAtIndex = theList(i).Size

答案 1 :(得分:3)

您可以使用通用列表集合:

Public Class MyItem   
  Public Property  FileName As String
  Public Property  FileSize As Integer   
End Class

现在你可以有一个清单:

Dim MyItems AS List(Of MyItem)

答案 2 :(得分:1)

请记住,虽然它不是强类型的,但HashTable类最适合存储和检索大量数据。如果FileName是唯一的,那将是您的密钥。此外,您可以将哈希表包装在另一个类中,并提供强类型的方法来添加和检索。

根据对this SO帖子的回答,Dictionary(of T)提供了哈希表的通用实现。可能值得研究。

答案 3 :(得分:0)

让我们保持超级简单。当程序员把事情变得比他们需要的更复杂时,我真的不喜欢。

Dim Multi_Dimensional_Array As Object(,) = _
        {{"Item 1", "1", "2", "3", "4", "5"}, 
         {"Item 2", "6", "7", "8", 9"", "No More Items"}}

如果您愿意,可以将它从“对象”更改为“字符串”。