111,117
社区成员
 发帖
 与我相关
 我的任务
 分享using System;
using System.Collections.Generic;
public class MyClass
{
    class InstanceA:ICloneable
 {
  public int x;
  public InstanceB B;
  public InstanceA(){}
  public InstanceA(int X,InstanceB b)
  {
   this.x=X;
   this.B=b;
  }
  object ICloneable.Clone()
  {
   return this.Clone();
  }
  public InstanceA Clone()
  {
    InstanceA A=this.MemberwiseClone() as InstanceA;
    A.B=this.B.Copy();
   return A;   //深复制
  //  return (InstanceA)this.MemberwiseClone();  //浅复制
   //return new InstanceA(this.x,this.B);     //use this can't get deep copy too..
   
  }
 }
 class InstanceB
 {
  public int y;
  public InstanceB Copy()
  {
    return this.MemberwiseClone() as InstanceB; 
  }
 }
 
 public static void Main()
 {
    InstanceA obj1=new InstanceA();
    obj1.x=1;
    obj1.B=new InstanceB();
    obj1.B.y=2;
    
  InstanceA obj2=obj1.Clone();
  obj2.x=3;
  obj2.B.y=4;
  Console.WriteLine("Obj1.x is:{0} \t obj1.B.y={1}",obj1.x,obj1.B.y);
     Console.WriteLine("Obj2.x is:{0} \t obj2.B.y={1}",obj2.x,obj2.B.y);
  Console.ReadLine();
 }
}