复制数组如果用等号赋值的话会有一个问题,就是如果你操作了新的数组,原有数组会有改变,这没有起到备份原数组作用(至于原因,可以了解下基础,也就是值类型与引用类型,这里不多说)。然后有人会说了,我可以直接创建一个新的数组,按原来的一个一个插入,不行吗?可以是可以,但是每个对象都要重新创建实例,是不是很麻烦。
原理就是用序列化一次,再反序列化一次的方式去拷贝集合
/// <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);
微信扫码查看本文
发表评论