【代码】C#中复制List集合到新的对象列表

2022-02-18 13:34:16  阅读 3162 次 评论 0 条

复制数组如果用等号赋值的话会有一个问题,就是如果你操作了新的数组,原有数组会有改变,这没有起到备份原数组作用(至于原因,可以了解下基础,也就是值类型与引用类型,这里不多说)。然后有人会说了,我可以直接创建一个新的数组,按原来的一个一个插入,不行吗?可以是可以,但是每个对象都要重新创建实例,是不是很麻烦。

原理就是用序列化一次,再反序列化一次的方式去拷贝集合

        /// <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);



微信扫码查看本文
本文地址:https://www.yangguangdream.com/?id=2194
版权声明:本文为原创文章,版权归 编辑君 所有,欢迎分享本文,转载请保留出处!

发表评论


表情

还没有留言,还不快点抢沙发?