我有一个嵌套的词典,如:
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,它在循环中填充。
谢谢
答案 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?