【问题标题】:nested dictionaries嵌套字典
【发布时间】:2026-01-12 20:10:01
【问题描述】:

我有一个嵌套的字典,例如:

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

插入新项目时:

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

在添加时,我的 collectionSub 充满了键和值。 但是调用 clear 时,collectionMain.value 为空。

如何保留 collectionMain 字典值?

collectionSub需要清空,循环填充。

谢谢

【问题讨论】:

    标签: vb.net


    【解决方案1】:

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

    【讨论】:

    • 你是什么意思?为我在 collectionmain 值中需要的每个字典创建一个新的 collectionSub?它在一个循环中,我不知道我需要多少个collectionSubs。
    • @TomVD:在循环内创建一个New Dictionary(Of String, String)()
    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

      不要清除collectionSub。不要忘记您正在添加 Dictionary(Of String, String) 的引用 - collectionSub。如果要清除该对象,则必须创建collectionSub 的“克隆”(深拷贝)。看看 SO 线程 - What is the best way to clone/deep copy a .NET generic Dictionary?

      【讨论】: