我需要保存一些值
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的所有地方进行修改。
答案 0 :(得分:0)
C#可与引用一起使用,因此,当将DICT1存储在DICT2中时,即存储了一个引用,如果您重置或更改DICT1中的某些值,则将更改DICT2中的值。
要复制字典,请使用:
Dictionary<string, int> copy = new Dictionary<string, int>(DICT1); //--> temporal variable
DICT2.Add(t, copy);