嵌套词典

时间:2011-12-28 14:25:35

标签: vb.net

我有一个嵌套的词典,如:

 Public collectionMain As New Dictionary(Of String, Dictionary(Of String, String))

插入新项目时:

collectionMain.Add(node.SelectSingleNode("key").InnerText.Trim, collectionSub)
collectionSub.Clear()

在添加我的collectionSub上填充了key&值。 但是当调用clear时,collectionMain.value为空。

如何保留collectionMain字典值?

需要清除collectionSub,它在循环中填充。

谢谢

3 个答案:

答案 0 :(得分:3)

您需要为每个值创建一个New字典(Of String,String)。

答案 1 :(得分:1)

每当您添加新词典项时,您都必须为该键声明一个新的子词典:

collectionMain.Add(node.SelectSingleNode("key").InnerText.Trim, _
                   New Dictionary(Of String, String))

collectionSub变量确实不应该存在,因为collectionMain中的每个键都有它自己的字典。

答案 2 :(得分:1)

不要清除collectionSub。别忘了你正在添加Dictionary(Of String, String) - collectionSub的引用。如果要清除该对象,则必须创建一个" clone" ({1}}的(深拷贝)。看一下SO线程 - What is the best way to clone/deep copy a .NET generic Dictionary?