[求助]如何实现LIST对象的深拷贝,LIST中的元素是引用变量
如题
List<T> PersonA = new List<T>();
List<T> PersonB;
T是一个类,也就是引用变量,实现了ICloneable接口。
现在想把PersonA的内容拷贝到PersonB中,请教各位大大如何实现。
我自己想了个办法,就是写一个Copy()函数,把PersonA的元素一个个取出来,挨个复制,再一个个Add到PersonB里面去。然后用
PersonB = Copy(PersonA);
的方法来实现。
但是感觉这样不够酷
最好是能在类中添加或重载一个方法,实现像
PersonB = PersonA.Clone();
这样的形式。
不知道大大们有啥好方法没?
此题分多,题傻,求大大们速来指教哈:P
------解决方案--------------------public static List<T> Clone<T>(this List<T> list)
{
//遍历clone
}
------解决方案--------------------将你的业务逻辑封装成扩展方法即可
------解决方案-------------------- 1 [Serializable]
public class Poco
{
}
2 public static T DeepClone<T>(T obj)
{
using (var ms = new MemoryStream())
{
var formatter = new BinaryFormatter();
formatter.Serialize(ms, obj);
ms.Position = 0;
return (T) formatter.Deserialize(ms);
}
}
------解决方案--------------------你可以给你的对象定义一个拷贝构造函数:
class MyClass
{
public int ID { get; set; }
public string Name { get; set; }
...
public MyClass(MyClass instance)
{
ID = instance.ID;
Name = instance.Name;
...
}
}
使用
List<MyClass> list1 = ...
List<MyClass> list2 = list1.Select(x => new MClass(x)).ToList();