2012-03-12 227 views
0

我需要做一些比較和洗牌領域,(我來自一個更多的PHP背景和使用數組是完全不同的,如readin後建議很多東西我知道VB.NET使用LIST和字典更容易vb.net字典,字典字典...填充讀出後總是空的

我有一本字典(字符串,字典(的字符串,字符串))填充好,但我嘗試讀出後,它總是空...

下面我填了幾個東西var我說的是 fillDictionary裏面的matcheswholename VALUES部分 我填充fillDictionary並將它添加到ma tchesWholename 之後,我清楚它,因爲它在一個循環,更多是來。

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 

回答

2

fillDictionary.Clear()看起來有點可疑。您實質上是在您的For循環的每次迭代中清理字典。

+0

是的,因爲把它放在那匹配的全名字典中後,我會重用它,但是不想要舊的結果。 – renevdkooi 2012-03-12 09:39:41

+0

@renevdkooi,你有沒有通過這個調試來查看是否有任何東西被添加到'matchesWholename'字典中? – 2012-03-12 09:40:58

+0

其實你可能是對的,我發現當我不這樣做的時候它確實被填滿了,但是不正確......我認爲加入會烘烤它的一個副本,而不是把它的實際參考 – renevdkooi 2012-03-12 09:41:48