vb.net字典的字符串,字典...填写后读数总是空的

时间:2012-03-12 09:10:14

标签: vb.net

我需要做一些字段的比较和改组,(我来自更多的PHP背景和使用数组是完全不同的,正如在阅读很多东西后所建议的那样我知道VB.NET使用LIST和Dictionary更容易。

我有一个字典(字符串,字典(字符串,字符串)),填写得很好,但在我尝试读出之后,它总是空的....

下面我填写了一些内容。 var我在谈论它 matchesWolename VALUES部分内的fillDictionary。 我填写fillDictionary并将其添加到matchesWholename 之后我清除了它,因为它处于一个循环中,而且还有更多。

Dim matchesTotal As New List(Of String)
        Dim fillDictionary As New Dictionary(Of String, String)
        Dim matchesWholename As New Dictionary(Of String, Dictionary(Of String, String))

        Try
            If ds.Tables("matchesWholename").Rows.Count > 0 Then
                For Each dr As DataRow In ds.Tables("matchesWholename").Rows

                    If Not matchesWholename.ContainsKey(CStr(dr("key"))) Then
                         fillDictionary.Add("programme", CStr(dr("programme")))
                        fillDictionary.Add("remark", CStr(dr("remark")))
                        fillDictionary.Add("key", CStr(dr("key")))
                        fillDictionary.Add("displayname", CStr(dr("prop_value")))
                        Console.WriteLine("count before insert {0}", fillDictionary.Count)
                        matchesWholename.Add(CStr(dr("sanction_key")), fillDictionary)
                    End If
                    If Not matchesTotal.Contains(CStr(dr("key"))) Then
                        matchesTotal.Add(CStr(dr("key")))
                    End If
                    fillDictionary.Clear()
                Next
            End If
        Catch ex As Exception
            Console.WriteLine("Err: {0}", ex.Message)
        End Try

稍后我尝试读出这样的内容,它什么都不返回.... 我实际上是否将filldictionary的副本发送到其中?或者我的clear()方法是否清除了里面的内容?

Dim pair As KeyValuePair(Of String, Dictionary(Of String, String))
        Dim subpair As KeyValuePair(Of String, String)
        For Each pair In matchesWholename
            ' Display Key and Value.
            For Each subpair In pair.Value
                Console.WriteLine("{0}, {1}, {2}", pair.Key, subpair.Key, subpair.Value)
            Next

        Next

1 个答案:

答案 0 :(得分:2)

fillDictionary.Clear()看起来有点可疑。您实际上是在For循环的每次迭代中清除字典。