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}";
            }
        }
    }
    

      

  • 相关阅读:
    Socket 的网络编程
    《Python 3.5从零开始学》笔记-第8章 面向对象编程
    Python 的8个关键要素
    分布式发布订阅模型网络的实现有哪些
    MongoDB知识整理
    C++模板类与Qt信号槽混用
    C++中 =default,=delete用法
    QT知识整理
    Python题整理
    STL库的应用
  • 原文地址:https://www.cnblogs.com/lixipeng/p/10255118.html
Copyright © 2011-2022 走看看