首页 > 解决方案 > 我想保存字典值

问题描述

我有这样的事情,我需要保持一些价值观

static Dictionary<string, int> DICT1 = new Dictionary<string, int>();
static Dictionary<string, Dictionary<string, int>> DICT2 = new Dictionary<string, Dictionary<string, int>>();

而且我需要能够将 DICT1 中的内容存储在 DICT2 中,但 DICT1 值需要在每次迭代时从 0 初始化

假设我这样做

foreach (var v in words)
{
    string t="";
    for (int i = 0; i < 23; i++)
    {
        t = "first word"  //this is just for example 
        if (v == ArrayOfWords[i])
        {    
            DICT1[ArrayOfWords[i]] += 1;  
        }
    }
    DICT2.ADD(t,DICT1);

所以现在在第一次迭代之后,我已经将值 DICT1 存储在 DICT2 键 t 中。

如果我在 DICT2 中的某个时间后重置 DICT1,我将不会拥有添加对(t,DICT1)时的值。

所以我想说的是字典不会在内存中保存副本,如果我修改 DICT1,我会在我使用 DICT1 的任何地方进行修改。

标签: c#dictionary

解决方案


C# 使用引用,因此当您将 DICT1 存储在 DICT2 中时,您将存储一个引用,如果您重置或更改 DICT1 中的某些值,您将更改 DICT2 中的值。

要复制字典,请使用:

Dictionary<string, int> copy = new Dictionary<string, int>(DICT1); //--> temporal variable

DICT2.Add(t, copy);

推荐阅读