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

      

  • 相关阅读:
    docker (centOS 7) 使用笔记3
    docker (centOS 7) 使用笔记4
    docker (centOS 7) 使用笔记2
    docker (centOS 7) 使用笔记1
    docker (centOS 7) 使用笔记3
    CentOS7 修改时区、charset
    p12(PKCS12)和jks互相转换
    tomcat7 日志设置为log4j
    Redis概述与基本操作
    Django学习笔记之安全
  • 原文地址:https://www.cnblogs.com/lixipeng/p/10255118.html
Copyright © 2011-2022 走看看