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



我试图用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中的项目是什么。

考虑这一点。比方说,你要列出一组人的名字和他们穿的衬衫的颜色。我穿一件红衬衫,你记下我的详细信息。然后我又穿上一件蓝色的衬衫,你又把我的细节做了一遍。如果你在第一个项目中叫我的名字,你会期望我再次神奇地穿上一件红衬衫吗,即使我脱下它,穿上了一件蓝衬衫?我只是一个人,不管你把我的名字放在名单上多少次,所以你会看到我穿的最后一件颜色的衬衫,不管你用什么项目来选择我。这就是对象在现实世界中的工作方式,也是对象在编程中的工作方式。

相关内容

  • 没有找到相关文章

最新更新