这是一个简化的代码,为什么当我调用Tuple
方法时,我的字典词典中的所有item.Clear()
列表数据(键除外)都被清除了?我不能将item参数放在for循环中,因为这是更复杂的嵌套循环的一部分
var dict = new Dictionary<string, List<Tuple<string, string>>>();
var item = new List<Tuple<string, string>>();
for (int i = 0; i < 5; i++)
{
item.Add(new Tuple<string, string>("key1", $"itemKey{i.ToString()}"));
item.Add(new Tuple<string, string>("key2", $"itemKey{i.ToString()}"));
item.Add(new Tuple<string, string>("key3", $"itemKey{i.ToString()}"));
item.Add(new Tuple<string, string>("key4", $"itemKey{i.ToString()}"));
dict.Add($"dictKey{i.ToString()}", item);
item.Clear();
}
答案 0 :(得分:0)
调用dict.Add($"dictKey{i.ToString()}", item);
时,对象引用将添加到字典中。由于您正在清除项目列表,因此字典也将被清除。
将代码修改为dict.Add($"dictKey{i.ToString()}", new List<Tuple<string, string>>(item));
不会清除字典中的条目,因为列表的副本已添加到字典中。