2012-06-08 76 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"}} 

如果您選擇,您可以將其從「對象」更改爲「字符串」。