我有以下代码:
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中的项目吗?
我有以下代码:
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中的项目吗?
test2 和 test 是对同一个对象(字典)的相同引用。为 test2 实例化一个新字典。
Dictionary<int, int> test2 = new Dictionary<int, int>(test);
当您分配test
给test2
via时,test2 = test
您正在分配对该对象的引用,这意味着它们都指向内存中的相同位置。上的任何更改test2
都将在 上生效test
。您需要使用new
关键字,例如:
Dictionary<int,int> test2 = new Dictionary<int,int>(test);