c#中大家是怎么做深拷贝的?一定要自己手动写代码吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#中大家是怎么做深拷贝的?一定要自己手动写代码吗?相关的知识,希望对你有一定的参考价值。

PmcMapRule DeepCopy()

PmcMapRule pmcMapRule = new PmcMapRule();

mapRule mapRuleNew = new mapRule();
PropertyInfo[] pis = typeof(mapRule).GetProperties();
foreach (PropertyInfo pi in pis)
pi.SetValue(mapRuleNew, pi.GetValue(MapRule, null), null);

pmcMapRule.MapRule = mapRuleNew;

return pmcMapRule;

当中是自动用反射来处理的。但是我发现这样也存在一个问题:如果是基本类型的对象,直接赋值没有问题,但是如果是引用类型的对象,这样实际上还是没有做到完全的深拷贝——这样一来,具体类型的深拷贝就一定要自己来手写代码了吗?不知道大家在遇到需要做深拷贝的时候是如何处理的。求指点。

参考技术A 值类型只能进行深拷贝
应用类型的拷贝与实现ICloneable接口没有关系,你完全可以自己写一个叫Clone的方法,但是实现ICloneable接口是有意义的。
深拷贝会把对象内部的引用类型的对象也克隆一份,浅拷贝不会
比如你克隆一辆汽车,浅拷贝的话两量汽车会共享4个轮子,深拷贝的话就会各自拥有独立的轮子本回答被提问者采纳

c# winform中怎么使用richtextbox?在工具栏中将它拖到指定地点之后要怎么做?是要写代码吗?具体的代码是

什么?我在搞课程设计,但是本身上课也没学到什么,不会,老师一定要我们添加一个作用类似于富文本编辑器的东西,很急啊!或者有没有其他的控件?教教我怎么使用啊!我QQ:158616937

看你要完成什么功能阿?如果要实现类似富文本编辑器的话,你应该先有菜单,然后通过菜单打开各种对话框,再由对话框来对所选文字进行格式设置或者其他操作。如果是复制、剪切等功能就不用对话框了,很简单。
只能用这个控件,没有其他的,

我加你的qq吧
参考技术A 看msdn介绍,身手党啊追问

还好吧,我也不是直接上来就问大家要一整个系统吧,如果我伸手党的话早就提问了,也不会研究到晚上快一点没办法了才提问

追答

具体的我也没细研究,没搞那个方向,不过应该不难

以上是关于c#中大家是怎么做深拷贝的?一定要自己手动写代码吗?的主要内容,如果未能解决你的问题,请参考以下文章

小红帽linux中sshd_config里面啥都没有 要自己手动写上去吗

在C#中怎么使数组是个可变的,数组大小由用户自己输入

C# ASP.NET怎么手动给GridView赋值,不从数据库中读取?

C#中想用messageBox这个类,为啥要添加引用才能使用求解答

JSP更换class文件后,一定要重启Tomcat吗?

在 C# 中手动设置线程退出代码?