C#中深度复制和浅度复制详解
程序员文章站
2023-10-31 13:58:34
本文章主要是讲解c# 语言编程中,深度复制和浅度复制,下面我将通过一个实例进行讲解。在实例开发之前,我们得先知道深度复制是什么和浅度复制是什么,它们之间的区别又是什么,下面...
本文章主要是讲解c# 语言编程中,深度复制和浅度复制,下面我将通过一个实例进行讲解。在实例开发之前,我们得先知道深度复制是什么和浅度复制是什么,它们之间的区别又是什么,下面将为大家一一揭晓。
1.深度复制是什么?
深度复制就是引用类型的复制。
2.浅度复制是什么?
浅度复制是值类型的复制。
以下是c#中深度复制和浅度复制的实例代码引用片段:
using system; using system.collections.generic; using system.text; namespace test { public class content { public int val; } //此处若是深度复制才继承icloneable接口 //public class cloner : icloneable public class cloner { public content mycontent = new content(); public cloner(int newval) { mycontent.val = newval; } //浅度复制 //使用system.object.memberwiseclone()进行浅度复制,使用getcopy方法. public object getcopy() { return memberwiseclone(); } //深度复制: public object clone() { cloner clonedcloner = new cloner(mycontent.val); //此处是实例化一个对象 return clonedcloner; } } } //主函数 using system; using system.collections.generic; using system.text; namespace test { class program { static void main(string[] args) { cloner mysource = new cloner(5); cloner mytarget = (cloner)mysource.getcopy();//深度为cloner console.writeline("mytarget.mycontent.val={}",mytarget.mycontent.val); mysource.mycontent.val = 2; console.writeline("mytarget.mycontent.val={}", mytarget.mycontent.val); } } }
通过简单的实例开发,大家对深度复制和浅度复制是不是有了大概的了解了,以后再有相关的内容介绍会在和大家分享哦