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