• c# 深度复制方法


    先看图:

     1、此图中新建了selectUsers对象,该对象过滤存储了userEntities的数据,当修改selectUsers的值时,会修改的userEntities。

    个人理解应该是虽然新建了selectUsers对象,但存储的依然是userEntities的引用地址,当修改selectUsers时会修改userEntities。

    解决方法:

    1、用Newtonsoft.Json序列化处理

     public static List<T> Clone<T>(this List<T> list) where T : new()

    {
    var str = JsonConvert.SerializeObject(list);
    return JsonConvert.DeserializeObject<List<T>>(str);
    }

    2、用二进制序列化和反序列化处理

    public static T DeepCopyByBinary<T>(T obj)
    {
      object retval;
      using (MemoryStream ms = new MemoryStream())
      {
        BinaryFormatter bf = new BinaryFormatter();
        bf.Serialize(ms, obj);
        ms.Seek(0, SeekOrigin.Begin);
        retval = bf.Deserialize(ms);
        ms.Close();
      }
      return (T)retval;
    }

  • 相关阅读:
    MySQL复制表结构和内容到另一张表中的SQL
    Page Cache(页缓存)
    mmap 与 munmap
    Shenandoah 与 ZGC
    InfluxDB入门
    SparkSQL 疫情Demo练习
    CyclicBarrier 解读
    mysql存储过程
    Kibana7.3.2与ElasticSearch7.3.2的集成
    Greenplum简介
  • 原文地址:https://www.cnblogs.com/hemajia/p/16292496.html
Copyright © 2020-2023  润新知