我想我已经弄明白这里发生了什么,但我想要一些确认。 (代码位于问题的底部)
我有一个List对象,我需要制作一个副本。
我尝试过的方法是创建另一个相同类型的新列表,然后使用' ='操作数,我也用AddRange方法测试并得到了相同的结果。
无论我如何操纵List的副本,它都会将操作应用于原始文件。
我相信这是因为C#使用列表作为引用/指针结构而不是对象/值。这是对的吗?
temp1.AddRange(list1);
temp2.AddRange(list2);
foreach(record item in temp1)
{
foreach (KeyValuePair<string, string> itemB in temp2.First().data)
{
item.data.Add(itemB.Key, null);
ERRORDATA = "item data state:" + item.ToString() + "\r\nitemB key:[" + itemB.Key + "] " + itemB.Value;
}
}
temp1.First().data.Add("DOOBY", "doo");
执行此操作后,list1插入了dooby,doo键/值对,当 只对temp1对象执行该操作时。
欢呼任何答案。
答案 0 :(得分:0)
在我看来,您对“list”temp1的更改感到困惑,并更改了每个列表所持有的对象。每个列表保存的对象只是对对象的引用,因此对一个列表中的对象所做的更改将反映在其他列表中。但是,如果你执行了temp1.Add(o),则不会将o添加到temp2。