吴劲松,3d舞台,章萍
1.额外添加一个构造函数,入参为待复制对象(如果字段为引用类型,需要继续添加构造函数,这样情况会变的十分复杂。)
public class Test1 { private int field1; private int field2; private int field3; public Test1() { } public Test1(Test1 test1) { this.field1 = test1.field1; this.field2 = test1.field2; this.field3 = test1.field3; } }
2.利用序列化反序列化(对性能会有杀伤)
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Runtime.Serialization.Formatters.Binary; using System.Text; using System.Threading.Tasks; namespace Test { class Program { static void Main(string[] args) { Test t1 = new Test(); Console.WriteLine(t1.list.Count); Test t2 = (Test)Clone(t1); t2.list.Add(""); Console.WriteLine(t2.list.Count); Console.WriteLine(t1.list.Count); Console.ReadLine(); } public static object Clone(object obj) { BinaryFormatter bf = new BinaryFormatter(); MemoryStream ms = new MemoryStream(); bf.Serialize(ms, obj); ms.Position = 0; return (bf.Deserialize(ms)); ; } } [Serializable] public class Test { public List<string> list = new List<string>(); } }
3.利用反射(测试了一个网上的接口可用,但是对性能杀伤和序列化反序列化相当,而且对代码混淆有一定影响。 https://www.cnblogs.com/zhili/p/DeepCopy.html)
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Blazor server side 自家的一些开源的, 实用型项目的进度之 CEF客户端
.NET IoC模式依赖反转(DIP)、控制反转(Ioc)、依赖注入(DI)
vue+.netcore可支持业务代码扩展的开发框架 VOL.Vue 2.0版本发布
网友评论