修改字典中的项目而不影响原始对象

时间:2012-07-19 11:57:19

标签: c# .net .net-4.0 dictionary

我有以下代码:

    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 吗?

2 个答案:

答案 0 :(得分:5)

test2和test是对同一个对象(字典)的相同引用。为test2实例化一个新字典。

Dictionary<int, int> test2 = new Dictionary<int, int>(test);

答案 1 :(得分:4)

当您通过testtest2分配给test2 = test时,您正在为该对象分配引用,这意味着它们都指向内存中的相同位置。 test2上的所有更改都将在test生效。您需要使用new关键字,例如:

Dictionary<int,int> test2 = new Dictionary<int,int>(test);