2015-02-05 50 views
0

我想建立一個數組,其行的鍵入字符串。行不必具有相同數量的列(鋸齒形數組)或每列中都有值。我希望能夠更新數組現有行中的列。VB.net鍵控陣列

我試過使用字典。

Dim ToolUsers as New Dictionary(Of String, Array) 
Dim UserData() As String = {"", "", "", "", "", "", "", "") 

Of String讓我訪問基於所述String值的任何特定行但Array是引用類型和總是指向存儲在UserData陣列中,而不是被一個值類型和在存儲該數組的值的電流值Dictionary

我查看ArrayArray s,但它似乎不允許通過密鑰訪問現有行或允許更新現有值。

VB.net中是否存在這樣的構造?

+0

字典應該工作。您需要爲每個新的Dictionary項目創建一個新數組,您不能只修改現有數組的值,並期望使用不同的數據創建一個新的Dictionary項目。 – Blackwood 2015-02-05 22:31:50

+0

很難理解爲什麼價值類型行爲對你很重要。也許你忽略了Array.Copy()。 – 2015-02-05 23:27:19

回答

0

你可以達到你想要使用Dictionary什麼,但在.NET are reference types陣列,所以你必須要小心你如何填充你的字典,而不是重複使用相同的數組,如果你真的想在每個項目不同的數據。例如

' Create a dictionary from string to array of string 
Dim x = New Dictionary(Of String, String())() 
x("A") = New String() { "A1", "A2", "A3" } 
' A : A1, A2, A3 
x("A")(1) = "A2x" 
' A : A1, A2x, A3 
Dim y = New String() { "Y1", "Y2" } 
x("Y1") = y ' points to same array as y 
x("Y2") = DirectCast(y.Clone(), String()) ' shallow copy of y, which is OK since String is immutable 
' A : A1, A2x, A3 
' Y1 : Y1, Y2 
' Y2 : Y1, Y2 
y(0) = "Y1x" 
' A : A1, A2x, A3 
' Y1 : Y1x, Y2 
' Y2 : Y1, Y2