我要保存字典值

时间:2019-03-26 16:09:11

标签: c# dictionary

我需要保存一些值

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的所有地方进行修改。

1 个答案:

答案 0 :(得分:0)

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

要复制字典,请使用:

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

DICT2.Add(t, copy);