- 浅复制
值类型的复制没有浅复制或深复制之说。浅(深)复制针对的是引用类型。比如数组Array的Clone()就是浅复制,对于值类型数组,克隆方法会产生两个独立的数组,克隆引用类型数组会产生指向相同对象的两个数组。
举例,数组的Clone()方法,返回object类型的引用,它必须被强制转换成数组类型。
static void Main(){ int[] intArr1={1,2,3}; int[] intArr2=(int[])intArr1.Clone(); intArr2[0]=100,intArr2[1]=200;intArr2[2]=300; }
上述图解:
class A{ public int value=5; } class Program{ static void Main(){ A[] AArray1=new A[3]{new A(),new A(),new A()}; A[] AArray2=(A[])AArray1.Clone(); AArray2[0].Value=100; AArray2[1].Value=200; AArray2[3].Value=300; } }
上述图解:
- 序列化
前面博客(http://www.cnblogs.com/tobecabbage/p/3492566.html)已有记录
序列化复习
序列化的定义:直接将内存中的数组原封不动的以特定的格式形式存储起来。
-》二进制序列化(将内存中的数组直接以二进制的形式取出)
-》步骤:
1.创建一个文件流
2.确保对象可以被序列化,给类前面加上[Serializable]。比如int类前就加了[Serializable]
3.BinaryFormatter
4.Serialize()或者DeSerialize()反序列化
-》XML序列化
♦ 用序列化反序列化实现深复制