我制作两个名为listA和listB的 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)
将对象listA添加到listB以下内容时,您必须复制对象:
listB.AddRange(listA.Select(t => new Test { Name = t.Name }));
Run Code Online (Sandbox Code Playgroud)
目前,您只是将引用复制listA到listB,并且这些引用指向同一个对象.这就是为什么通过修改它们listA使变化可见的原因listB.