zoukankan      html  css  js  c++  java
  • 使用Newtonsoft序列化对象,实现深拷贝

    工作记录

    深拷贝:全新创建一个对象,值与复制对象一致,两个对象互不相关,修改一个对象不会影响到另一个对象

    浅拷贝:全新创建一个对象,值与复制对象一致,两个对象相关,修改一个对象影响到另一个对象

    在工作中需要将一个对象进行深拷贝:

    做法1:使用反射

    做法2:使用序列化

    这里使用做法2 利用Newtonsoft.Json先对 对象做一次序列化,再做一次反序列化

    添加Newtonsoft.Json引用

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using Newtonsoft.Json;
    
    namespace 使用序列化和反序列化来进行对象的深拷贝
    {
        class Program
        {
            static void Main(string[] args)
            {
                test a = new test() { id = 1, name = "LXP1", age = 22 };
                Console.WriteLine(a.ToString());
                test b = a;
                a.name = "LXP2";
                Console.WriteLine(a.ToString());
                Console.WriteLine(b.ToString());
    
                test c = new test() { id = 3, name = "LXP3", age = 33 };
                test d = JsonConvert.DeserializeObject<test>( JsonConvert.SerializeObject(c));
                c.name = "LXP33";
                Console.WriteLine(d.ToString());
                Console.Read();
            }
        }
        class test
        {
            public int id { get; set; }
            public string  name { get; set; }
            public int age { get; set; }
            public override string ToString()
            {
                return $"id={id},name={name},age={age}";
            }
        }
    }
    

      

  • 相关阅读:
    我的游戏开发工作生涯要开始了
    关于碰撞检测和物理引擎
    关于havok
    认识多渲染目标(Multiple Render Targets)技术
    无限分级的tree
    运用ThreadLocal解决jdbc事务管理
    盒子模型 计算
    监听域对象
    爱恨原则 就近原则 (LVHA)
    java database connection
  • 原文地址:https://www.cnblogs.com/lixipeng/p/10255118.html
Copyright © 2011-2022 走看看