c# - 我想保存字典值
问题描述
我有这样的事情,我需要保持一些价值观
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# 使用引用,因此当您将 DICT1 存储在 DICT2 中时,您将存储一个引用,如果您重置或更改 DICT1 中的某些值,您将更改 DICT2 中的值。
要复制字典,请使用:
Dictionary<string, int> copy = new Dictionary<string, int>(DICT1); //--> temporal variable
DICT2.Add(t, copy);