复制数组如果用等号赋值的话会有一个问题,就是如果你操作了新的数组,原有数组会有改变,这没有起到备份原数组作用(至于原因,可以了解下基础,也就是值类型与引用类型,这里不多说)。然后有人会说了,我可以直接创建一个新的数组,按原来的一个一个插入,不行吗?可以是可以,但是每个对象都要重新创建实例,是不是很麻烦。
原理就是用序列化一次,再反序列化一次的方式去拷贝集合
/// <summary>
/// 复制List
/// </summary>
/// <typeparam name="T">对象类型</typeparam>
/// <param name="List">源对象</param>
/// <returns>复制后的对象列表</returns>
public static List<T> CloneList<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>;
}
}引用
var nUserList = CloneList<UserInfo>(userList);

微信扫码查看本文
发表评论