using System;using System.Collections.Generic;using System.Text;using System.Collections;using System.IO;using System.Runtime.Serialization;using System.Runtime.Serialization.Formatters.Binary;namespace ConsoleApplication1...{ /**//// <summary> /// Abstract Class Animal /// </summary> /// [Serializable] public abstract class Animal ...{ public int i; public double d; public byte b; public string[] s; public abstract Animal Clone(); public abstract Animal Clonewise(); } /**//// <summary> /// SubClass Dog /// </summary> /// [Serializable] public class Dog : Animal ...{ public Animal CreateDeepCopy() ...{ Animal animal; MemoryStream memoryStream = new MemoryStream(); BinaryFormatter formatter = new BinaryFormatter(); formatter.Serialize(memoryStream, this); memoryStream.Position = 0; animal = (Animal)formatter.Deserialize(memoryStream); return animal; } public Dog(int i, double d, byte b, string s1, string s2) ...{ this.i = i; this.d = d; this.b = b; string[] ms =...{ s1, s2 }; this.s = ms; } public override Animal Clone() ...{ return (Animal)this.CreateDeepCopy(); } public override Animal Clonewise() ...{ return (Animal)this.MemberwiseClone(); } } public class App ...{ public static void Main() ...{ Console.WriteLine("这个是深拷贝"); laolao(); Console.WriteLine("这个是浅拷贝"); laolao1(); Console.WriteLine("这个是直接拷贝"); laolao2(); } public static void laolao() ...{ Animal a1 = new Dog(1, 2, 3, "A", "B"); System.Console.WriteLine("Animal a1 's members : i={0} d= {1} b={2} s1={3} s2={4}", a1.i, a1.d, a1.b, a1.s[0], a1.s[1]); Animal a2; a2 = a1.Clone(); System.Console.WriteLine("Animal a2 's members : i={0} d= {1} b={2}s1={3} s2={4}", a2.i, a2.d, a2.b, a2.s[0], a2.s[1]); //System.Console.ReadLine(); System.Console.WriteLine("do a1.i = 9;a1.s[0] = C"); a1.i = 9; a1.s[0] = "C"; System.Console.WriteLine("Animal a1 's members : i={0} d= {1} b={2}s1={3} s2={4}", a1.i, a1.d, a1.b, a1.s[0], a1.s[1]); System.Console.WriteLine("Animal a2 's members : i={0} d= {1} b={2}s1={3} s2={4}", a2.i, a2.d, a2.b, a2.s[0], a2.s[1]); System.Console.WriteLine("do a2.i = 8;a2.s[1] =D"); a2.i = 8; a2.s[1] = "D"; System.Console.WriteLine("Animal a1 's members : i={0} d= {1} b={2}s1={3} s2={4}", a1.i, a1.d, a1.b, a1.s[0], a1.s[1]); System.Console.WriteLine("Animal a2 's members : i={0} d= {1} b={2}s1={3} s2={4}", a2.i, a2.d, a2.b, a2.s[0], a2.s[1]); //System.Console.ReadLine(); } public static void laolao1() ...{ Animal a1 = new Dog(1, 2, 3, "A", "B"); System.Console.WriteLine("Animal a1 's members : i={0} d= {1} b={2} s1={3} s2={4}", a1.i, a1.d, a1.b, a1.s[0], a1.s[1]); Animal a2; a2 = a1.Clonewise(); System.Console.WriteLine("Animal a2 's members : i={0} d= {1} b={2}s1={3} s2={4}", a2.i, a2.d, a2.b, a2.s[0], a2.s[1]); //System.Console.ReadLine(); System.Console.WriteLine("do a1.i = 9;a1.s[0] = C"); a1.i = 9; a1.s[0] = "C"; System.Console.WriteLine("Animal a1 's members : i={0} d= {1} b={2}s1={3} s2={4}", a1.i, a1.d, a1.b, a1.s[0], a1.s[1]); System.Console.WriteLine("Animal a2 's members : i={0} d= {1} b={2}s1={3} s2={4}", a2.i, a2.d, a2.b, a2.s[0], a2.s[1]); System.Console.WriteLine("do a2.i = 8;a2.s[1] =D"); a2.i = 8; a2.s[1] = "D"; System.Console.WriteLine("Animal a1 's members : i={0} d= {1} b={2}s1={3} s2={4}", a1.i, a1.d, a1.b, a1.s[0], a1.s[1]); System.Console.WriteLine("Animal a2 's members : i={0} d= {1} b={2}s1={3} s2={4}", a2.i, a2.d, a2.b, a2.s[0], a2.s[1]); //System.Console.ReadLine(); } public static void laolao2() ...{ Animal a1 = new Dog(1, 2, 3, "A", "B"); System.Console.WriteLine("Animal a1 's members : i={0} d= {1} b={2} s1={3} s2={4}", a1.i, a1.d, a1.b, a1.s[0], a1.s[1]); Animal a2; a2 = a1; System.Console.WriteLine("Animal a2 's members : i={0} d= {1} b={2}s1={3} s2={4}", a2.i, a2.d, a2.b, a2.s[0], a2.s[1]); //System.Console.ReadLine(); System.Console.WriteLine("do a1.i = 9;a1.s[0] = C"); a1.i = 9; a1.s[0] = "C"; System.Console.WriteLine("Animal a1 's members : i={0} d= {1} b={2}s1={3} s2={4}", a1.i, a1.d, a1.b, a1.s[0], a1.s[1]); System.Console.WriteLine("Animal a2 's members : i={0} d= {1} b={2}s1={3} s2={4}", a2.i, a2.d, a2.b, a2.s[0], a2.s[1]); System.Console.WriteLine("do a2.i = 8;a2.s[1] =D"); a2.i = 8; a2.s[1] = "D"; System.Console.WriteLine("Animal a1 's members : i={0} d= {1} b={2}s1={3} s2={4}", a1.i, a1.d, a1.b, a1.s[0], a1.s[1]); System.Console.WriteLine("Animal a2 's members : i={0} d= {1} b={2}s1={3} s2={4}", a2.i, a2.d, a2.b, a2.s[0], a2.s[1]); System.Console.ReadLine(); } }}