• C#------如何深度克隆一个对象


    普通版:

    public static object CloneObject( object obj )
    {
      using ( MemoryStream memStream = new MemoryStream( ) )
      {
        BinaryFormatter binaryFormatter = new BinaryFormatter( null ,
          new StreamingContext( StreamingContextStates.Clone ) );
        binaryFormatter.Serialize( memStream , obj );
        memStream.Seek( 0 , SeekOrigin.Begin );
        return binaryFormatter.Deserialize( memStream );
      }
    }

    泛型版:

    public  static  T  Clone<T>(T  obj)
    {
      T  ret  =  default(T);
      if  (obj  !=  null)
      {
        XmlSerializer  cloner  =  new  XmlSerializer(typeof(T));
        MemoryStream  stream  =  new  MemoryStream();
        cloner.Serialize(stream,  obj);
        stream.Seek(0,  SeekOrigin.Begin);
        ret  =  (T)cloner.Deserialize(stream);
      }
      return  ret;
    }

    注意:如果某个类报提示错误:XXX类无法序列化,则要在类名上加上[Serializable]

    转载:

    https://blog.csdn.net/yinbucheng/article/details/62418205
  • 相关阅读:
    jquery使用--常见前端效果实现
    Quartz —— Spring 环境下的使用
    java设计模式--外观模式(Facade)
    java设计模式--装饰模式(Decorator)
    Java开发中的23种设计模式详解(转)
    java设计模式--工厂模式
    选择排序
    序列化
    解析器
    版本控制
  • 原文地址:https://www.cnblogs.com/tianhengblogs/p/9231896.html
Copyright © 2020-2023  润新知