我有以下代码:
Dictionary<int, int> test = new Dictionary<int, int>();
test.Add(1,1);
test.Add(2, 2);
Dictionary<int, int> test2 = test;
test2.Remove(1);
从 test2 中删除项目也是从 test 对象中删除该项目。你能告诉我如何修改 test2 中的项目而不影响 test 吗?
答案 0 :(得分:5)
test2和test是对同一个对象(字典)的相同引用。为test2实例化一个新字典。
Dictionary<int, int> test2 = new Dictionary<int, int>(test);
答案 1 :(得分:4)
当您通过test
将test2
分配给test2 = test
时,您正在为该对象分配引用,这意味着它们都指向内存中的相同位置。 test2
上的所有更改都将在test
生效。您需要使用new
关键字,例如:
Dictionary<int,int> test2 = new Dictionary<int,int>(test);