zoukankan      html  css  js  c++  java
  • List<T> 深度拷贝

            /// <summary>
            /// 不带[Serializable]标识的深度拷贝
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="obj"></param>
            /// <returns></returns>
            public static T DeepCopy<T>(this T obj) where T : class
            {
                object retval = null;
                using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
                {
                    System.Xml.Serialization.XmlSerializer xml = new System.Xml.Serialization.XmlSerializer(typeof(T));
                    xml.Serialize(ms, obj);
                    ms.Seek(0, System.IO.SeekOrigin.Begin);
                    retval = xml.Deserialize(ms);
                    ms.Close();
                }
                return (T)retval;
            }
    
            /// <summary>
            /// 带有[Serializable]标识的深度拷贝
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="obj"></param>
            /// <returns></returns>
            public static List<T> Clone<T>(this List<T> obj) where T : class
            {
                using (System.IO.Stream objectStream = new System.IO.MemoryStream())
                {
                    System.Runtime.Serialization.IFormatter formatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
                    formatter.Serialize(objectStream, obj);
                    objectStream.Seek(0, System.IO.SeekOrigin.Begin);
                    return formatter.Deserialize(objectStream) as List<T>;
                }
            }
  • 相关阅读:
    Java(15) _Runtime类 内存方法
    Mysql(1)_ 基本sql语句
    Java(13)_ 用IO流复制文件
    Java(12)_switch语句
    Java(10) _无参构造方法调用问题
    Java(9) _强制类型转换
    Java(8)_符串常量赋值
    Java(7)_file类的常用方法
    Java(6)_ Runtime类调用exe程序
    Java(5) _类的定义
  • 原文地址:https://www.cnblogs.com/honk/p/14461188.html
Copyright © 2011-2022 走看看