2012-06-08 46 views
2

我想创建强类型多维数组或收集从数据库包含下列值:强类型多维数组/收藏

  • 文件名(作为字符串)
  • 文件大小(作为整数)

要求:

  • 经由索引无障碍(例如编曲(ⅰ)(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 
+0

根据评论,我选择使用'Structure'而不是类,因为它具有比'Properties'更'清洁的实现'。我会在我的原始问题下面发布一个示例。 – Chiramisu

+1

[不要使用可变结构!](http://stackoverflow.com/q/441309) – MarkJ

+0

O.o优秀的知识。你每天都会学到东西。谢谢@MarkJ! :) 现在结构可以定义为可变的吗?或者他们可以变得不可变?我是干净代码的忠实粉丝。 :) – Chiramisu

回答

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 
+0

O.o现在,这是一个美味的答案。工作到凌晨3点,所以有一点脑袋炸了atm,谢谢! ;) – Chiramisu

+0

你好@ReedCopsey,如果我把代表给Kapil,因为他的代表少,他的回答非常相似和有帮助,你会介意吗? – Chiramisu

+0

@Chiramisu接受你喜欢的任何答案;)对我来说没问题 - 总的来说,选择你觉得帮助你最大或最好的答案,不管名誉如何(这在盛大的计划中并不重要) –

3

就可以使用泛型列表集合:

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

现在你可以有一个列表:

Dim MyItems AS List(Of MyItem) 
1

请记住,虽然它不是强类型的HashTable类表现最好用于存储和检索大量数据。如果FileName是唯一的,那将是你的关键。此外,您可以将散列表包装到另一个类中,并提供用于添加和检索的强类型方法。

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

0

让我们保持它超级简单。我真的不喜欢程序员让事情比他们需要的更复杂。

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

如果您选择,您可以将其从“对象”更改为“字符串”。