我试图用4个键填充字典,每个键值是一个多维数组(13,7)。第一个键和数组完美地填充。当第二个键填充时,第一个和第二个键的值都具有第二个数组迭代的值,并在接下来的2次迭代中继续这样做,直到我有4个键和所有相同的值。我使用手表逐行验证,以验证每个数组具有唯一值,每个键具有唯一值。如有任何帮助,我将不胜感激。
Dim BitMap As New Dictionary(Of String, String(,))
For y = 0 To strDiffEQName.Length - 1
For x = 0 To 1
Dim intFirst As Integer = Array.IndexOf(rowvalue, "[" & strSTKName & "_" & strSendRecv(x) & "_" & strDiffEQName(y) & "]") 'Find first string in Array (Start Block)
Dim intSecond As Integer = Array.LastIndexOf(rowvalue, "[" & strSTKName & "_" & strSendRecv(x) & "_" & strDiffEQName(y) & "]") 'Find second string in Array (Stop Block)
Dim intNum As Integer = 0
For i As Integer = intFirst + 1 To intSecond - 1 'Loop through array betwween start and stop block
Dim strHolder() As String 'Array that will temporary hold values until transfered to the strString Array
strHolder = rowvalue(i).Split(","c) 'load data between commas to the temporary array
ReDim Preserve strHolder(strHolder.Length - 1) 'Increase rows in array by one
For k As Integer = 0 To 7
strString(intNum, k) = strHolder(k) 'Load temp data into multi-dimensional array
Next
intNum = intNum + 1 'Increment to next row in Multi-dimensional array
Next
BitMap.Add(strSendRecv(x) & "_" & strDiffEQName(y), strString) 'Transfer Multi-dimensional array to Dictionary
Next
Next
如前所述,数组是引用类型。这是无法改变的。如果你想向Dictionary
添加四个项目,那么你必须创建四个数组。就是这么简单。如果你只创建一个数组并将其相加四次,那么很明显你只会看到一组数据,而不管你查看的Dictionary
中的项目是什么。
考虑这一点。比方说,你要列出一组人的名字和他们穿的衬衫的颜色。我穿一件红衬衫,你记下我的详细信息。然后我又穿上一件蓝色的衬衫,你又把我的细节做了一遍。如果你在第一个项目中叫我的名字,你会期望我再次神奇地穿上一件红衬衫吗,即使我脱下它,穿上了一件蓝衬衫?我只是一个人,不管你把我的名字放在名单上多少次,所以你会看到我穿的最后一件颜色的衬衫,不管你用什么项目来选择我。这就是对象在现实世界中的工作方式,也是对象在编程中的工作方式。