/// <summary>
/// 深拷贝方法1.需标记对象序列号-不知道标记啥的引用一次看报错信息即可
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="List">The list.</param>
/// <returns>List{``0}.</returns>
private List<T> Clone<T>(object List)
{
using (Stream objectStream = new MemoryStream())
{
IFormatter formatter = new BinaryFormatter();
formatter.Serialize(objectStream, List);
objectStream.Seek(0, SeekOrigin.Begin);
return formatter.Deserialize(objectStream) as List<T>;
}
}
/// <summary>
/// 深拷贝方法2.无需标记对象序列号
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="obj"></param>
/// <returns></returns>
private List<T> DeepCopy<T>(List<T> obj)
{
List<T> list = new List<T>();
foreach (var item in obj)
{
object retval;
using (MemoryStream ms = new MemoryStream())
{
XmlSerializer xml = new XmlSerializer(typeof(T));
xml.Serialize(ms, item);
ms.Seek(0, SeekOrigin.Begin);
retval = xml.Deserialize(ms);
ms.Close();
}
list.Add((T)retval);
}
return list;
}
List集合深度拷贝方法
最新推荐文章于 2025-01-12 20:58:06 发布