2

我有以下代码:

    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中的项目吗?

4

2 回答 2

5

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

Dictionary<int, int> test2 = new Dictionary<int, int>(test);
于 2012-07-19T11:59:35.747 回答
4

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

Dictionary<int,int> test2 = new Dictionary<int,int>(test);
于 2012-07-19T12:00:28.030 回答