浅复制:
是指将对象中的所有字段逐字复杂到一个新对象
对值类型字段只是简单的拷贝一个副本到目标对象,改变目标对象中值类型字段的值不会反映到原始对象中,因为拷贝的是副本
对引用型字段则是指拷贝他的一个引用到目标对象。改变目标对象中引用类型字段的值它将反映到原始对象中,因为拷贝的是指向堆是上的一个地址
深复制:
深拷贝与浅拷贝不同的是对于引用字段的处理,深拷贝将会在新对象中创建一个新的对象和原始对象中对应字段相同(内容相同)的字段,也就是说这个引用和原始对象的引用是不同, 我们改变新对象中这个字段的时候是不会影响到原始对象中对应字段的内容。
using System;
using System.Collections.Generic;
using System.IO;
using System.Xml.Serialization;
namespace Tools.Extensions {
public static class ObjectCloneExtension {
public static T Clone<T>(T obj) where T : class {
if (obj == null) return null;
var str = JsonUtils.JsonHelper.SerializeObjectToJson(obj);
return JsonUtils.JsonHelper.DeserializeJsonToObject<T>(str);
}
public static List<T> CloneList<T>(T obj) where T : class {
if (obj == null) return null;
var str = JsonUtils.JsonHelper.SerializeObjectToJson(obj);
return JsonUtils.JsonHelper.DeserializeJsonToList<T>(str);
}
}
}
声明:
本文采用
BY-NC-SA
协议进行授权,如无注明均为原创,转载请注明转自
云曦的秘密基地
本文地址: C# 浅复制和深复制
本文地址: C# 浅复制和深复制