Hi Guys
NP89 ICloneable interface
http://www.java2s.com/Code/CSharp/Language-Basics/DemonstrateICloneable.htm
I got following program from the above website. It demonstrates ICloneable interface.
What is the purpose of defining X o = new X(x);. Because without defining
X o = new X(x); program is producing same result. Next program demonstrates that.
Anyone knows please explain the reason.
Thank you
using System;
class X
{
public int a;
public X(int x) { a = x; }
}
class Test : ICloneable
public X o;
public int b;
public Test(int x, int y)
o = new X(x);
b = y;
public void show(string name)
Console.Write(name + " values are ");
Console.WriteLine("o.a: {0}, b: {1}", o.a, b);
Console.WriteLine();
// Make a deep copy of the invoking object.
public object Clone()
Test temp = new Test(o.a, b);
return temp;
public class CloneDemo
public static void Main()
Test ob1 = new Test(10, 20);
ob1.show("ob1");
Console.WriteLine("Make ob2 a clone of ob1.");
Test ob2 = (Test)ob1.Clone();
ob2.show("ob2");
Console.WriteLine("Changing ob1.o.a to 99 and ob1.b to 88.");
ob1.o.a = 99;
ob1.b = 88;
/*
*/
class Test //: ICloneable
//public X o;
//o = new X(x);
a = x;
Console.WriteLine("a: {0}, b: {1}", a, b);
Test temp = new Test(a, b);
ob1.a = 99;