对List <T>进行独立复制

Ken*_*sen 0 c#

我制作两个名为listAlistB的 List <Test> .我在listA中保存了数据的和平.我将listA中的数据复制到listB.我更改了listB中的数据.当我更改listB中的数据时,它也会在listA中更改- 是否可以避免这种情况?

我希望你能帮助我:o)

public class Test
{
    public string Name { get; set; }
}

static void Test()
    {
        List<Test> listA = new List<Test>();
        List<Test> listB = new List<Test>();

        listA.Add(new Test { Name = "A" });
        listB.AddRange(listA);

        //I change the data in listB and the data in listA also get changed. 
        listB.First().Name = "B";
        Console.WriteLine("listA: {0} listB: {1}", listA.First().Name, listB.First().Name);

        //Can I avoid the change of data in listA?
    }
Run Code Online (Sandbox Code Playgroud)

Lee*_*Lee 8

将对象listA添加到listB以下内容时,您必须复制对象:

listB.AddRange(listA.Select(t => new Test { Name = t.Name }));
Run Code Online (Sandbox Code Playgroud)

目前,您只是将引用复制listAlistB,并且这些引用指向同一个对象.这就是为什么通过修改它们listA使变化可见的原因listB.