class MyNumber: ICloneable
{
private int _x;
public int X
{
get { return this._x; }
set { this._x = value; }
}
public MyNumber(int x)
{
this._x = x;
}
#region ICloneable Members
public object Clone()
{
return new MyNumber(this.X);
}
#endregion
}MyNumber a = new MyNumber(10);
MyNumber b = (MyNumber)a.Clone();
MyNumber c = a;
a.X += 100; // Incremented to display b.X does not get incremented, while c.X does.
Console.WriteLine(a.X); // Prints 110
Console.WriteLine(b.X); // Prints 10
Console.WriteLine(c.X); // Prints 110