using System; class ContainedValue { public ContainedValue(int count) { this.count = count; } public int count; } class MyObject: ICloneable { public MyObject(int count) { this.contained = new ContainedValue(count); } public object Clone() { Console.WriteLine("Clone"); return(new MyObject(this.contained.count)); } public ContainedValue contained; } public class SystemArrayandtheCollectionClassesICloneable { public static void Main() { MyObject my = new MyObject(33); MyObject myClone = (MyObject) my.Clone(); Console.WriteLine( "Values: {0} {1}", my.contained.count, myClone.contained.count); myClone.contained.count = 15; Console.WriteLine( "Values: {0} {1}", my.contained.count, myClone.contained.count); } }