zoukankan      html  css  js  c++  java
  • c# 深拷贝

    /// <summary>
    /// 序列化json
    /// </summary>
    /// <param name="input"></param>
    /// <param name="settings"></param>
    public static string SerializeJson(this object input, JsonSerializerSettings settings=null)
    {
    if (input == null)
    return null;
    try
    {
    if(settings==null)
    return JsonConvert.SerializeObject(input);
    return JsonConvert.SerializeObject(input, settings);

    }
    catch (Exception ex)
    {
    return null;
    }
    }
    /// <summary>
    /// 反序列化json
    /// </summary>
    /// <param name="input"></param>
    public static T DeserializeJson<T>(this string input)
    {
    if (string.IsNullOrWhiteSpace(input))
    return default(T);
    try
    {
    if (string.IsNullOrEmpty(input))
    return default(T);
    return Newtonsoft.Json.JsonConvert.DeserializeObject<T>(input);
    }
    catch (Exception ex)
    {
    return default(T);
    }
    }

    public static T CopyBySerialize<T>(this T obj) where T : class
    {
    if (obj == null) return default(T);
    var input = obj.SerializeJson();
    return input.DeserializeJson<T>();
    }

    我还是喜欢通过using Newtonsoft.Json;来进行深浅拷贝

    通常我们在引用一个引用变量的时候,我们可能会对变量进行修改,但是我们其实并不需要修改其中值,暂时的使用。比如有一个封装很深的变量,我们只想用它的值,然后在某处逻辑判断的时候,修改其值并进行后面的逻辑,然后保存。但是并不希望修改原来的变量,这个时候我们可以考虑使用深拷贝来进行

    深拷贝是把它的值和地址复制一份到新的副本中。

  • 相关阅读:
    服务列表
    Tinyfool的2013年总结————在困惑和挣扎中试图前行
    支付平台程序,支付程序,网络pos程序,api接口程序,锋锐支付平台程序开发领导者!
    是新浪移动云
    Convert SVG to PNG in Python
    qrcode 4.0.4 : Python Package Index
    CairoSVG
    cairo graphics.org
    The Apache™ Batik Project
    Online SVG to PNG/JPEG/TIFF conversion
  • 原文地址:https://www.cnblogs.com/CnnBlog/p/11172673.html
Copyright © 2011-2022 走看看