C# 如何在C中将一个列表复制到另一个列表#
我有一个列表,我想复制到另一个列表 我有“employeeAddressDataToSave”列表,我想将此列表复制到“EmployeeAddressDataToSaveTurn”列表 我使用下面的代码来实现这一点。设置好后,再往前走,我将更新EmployeeAddressDataToSaveList。这些更改将自动进入“employeeAddressDataToSaveReturn”列表。我不希望我的EmployeeAddressDataToSaveTurn列表随着对employeeAddressDataToSave的更改而更新。有办法吗C# 如何在C中将一个列表复制到另一个列表#,c#,list,C#,List,我有一个列表,我想复制到另一个列表 我有“employeeAddressDataToSave”列表,我想将此列表复制到“EmployeeAddressDataToSaveTurn”列表 我使用下面的代码来实现这一点。设置好后,再往前走,我将更新EmployeeAddressDataToSaveList。这些更改将自动进入“employeeAddressDataToSaveReturn”列表。我不希望我的EmployeeAddressDataToSaveTurn列表随着对employeeAddre
employeeAddressDataToSaveReturn = new List<Address>(employeeAddressDataToSave);
EmployeeAddressDataToSaveTurn=新列表(employeeAddressDataToSave);
您正在执行一系列操作。该列表是两个单独的列表,但列表中的项目在它们之间共享。如果您编辑的是一个项目,而不是列表本身,则编辑内容将同时显示在两个列表中
在创建新列表时,您需要提供一些方法来复制地址
employeeAddressDataToSaveReturn = new List<Address>(employeeAddressDataToSave.Select(x=>x.Copy());`
如果Address
包含嵌套类,您也需要为它们编写Copy()
方法,并递归调用Copy()
。您正在执行一个嵌套类。该列表是两个单独的列表,但列表中的项目在它们之间共享。如果您编辑的是一个项目,而不是列表本身,则编辑内容将同时显示在两个列表中
在创建新列表时,您需要提供一些方法来复制地址
employeeAddressDataToSaveReturn = new List<Address>(employeeAddressDataToSave.Select(x=>x.Copy());`
如果
Address
包含嵌套类,您也需要为它们编写Copy()
方法,并递归调用Copy()
。您的列表不包含地址数据项,它们包含对地址数据项的引用。这些列表是独立的,这意味着如果将对地址的引用添加到列表2中,则不会将其添加到列表1中:
var list1 = GetList1();
Console.WriteLine(list1.Count); // 3
var list2 = new List(list1);
list2.Add(new AddressData("John Doe", "Foo street", "12345");
Console.WriteLine(list1.Count); // 3
Console.WriteLine(list2.Count); // 4
但是,如果您编辑列表1中的某个项目,您还将在其他列表中对其进行修改
Console.WriteLine(list1[2].Name); // Bob
Console.WriteLine(list2[2].Name); // Bob
list2[2].Name = "Jim";
Console.WriteLine(list1[2].Name); // Jim <-- Changed
Console.WriteLine(list2[2].Name); // Jim
您的列表不包含地址数据项,它们包含对地址数据项的引用。这些列表是独立的,这意味着如果将对地址的引用添加到列表2中,则不会将其添加到列表1中:
var list1 = GetList1();
Console.WriteLine(list1.Count); // 3
var list2 = new List(list1);
list2.Add(new AddressData("John Doe", "Foo street", "12345");
Console.WriteLine(list1.Count); // 3
Console.WriteLine(list2.Count); // 4
但是,如果您编辑列表1中的某个项目,您还将在其他列表中对其进行修改
Console.WriteLine(list1[2].Name); // Bob
Console.WriteLine(list2[2].Name); // Bob
list2[2].Name = "Jim";
Console.WriteLine(list1[2].Name); // Jim <-- Changed
Console.WriteLine(list2[2].Name); // Jim
搜索深度复制,深度克隆您需要实现原型设计模式来解决问题,以避免一个列表中的更改不影响另一个列表。搜索深度复制,深度克隆您需要实现原型设计模式来解决问题,以避免一个列表中的更改不影响另一个列表。