添加新键和值时,字典值将被覆盖

时间:2014-05-10 01:28:30

标签: vb.net dictionary multidimensional-array

我试图用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

1 个答案:

答案 0 :(得分:0)

如前所述,数组是引用类型。这无法改变。如果要向Dictionary添加四个项目,则必须创建四个数组。就这么简单。如果您只创建一个数组并添加四次,那么显然您只会看到一组数据,而不管您查看的Dictionary中的项目是什么。

考虑一下。让我们说你正在列出一个人的名字和他们穿着的衬衫的颜色。我穿着一件红色的衬衫,然后拿下我的细节。然后,我再次穿上蓝色衬衫,再次完成我的细节。如果你从第一个项目打电话给我的名字,你是否会期待我再次穿着一件红色衬衫,即使我把它脱下来穿上蓝色衬衫?我只有一个人,不管你把我的名字放在名单上多少次,所以无论你用什么列表项来选择我,你都会看到我穿的最后一件颜色的衬衫。这就是对象在现实世界中的工作方式以及对象在编程中的工作方式。