Implementing ICloneable in a class C# with Example



Implementing ICloneable in a class C# with Example

Implement ICloneable in a class with a twist. Expose a public type safe Clone() and implement object Clone() 
privately. 
public class Person : ICloneable 
{ 
// Contents of class 
public string Name { get; set; } 
public int Age { get; set; } 
// Constructor 
public Person(string name, int age) 
{ 
this.Name=name; 
this.Age=age; 
} 
// Copy Constructor 
public Person(Person other) 
{ 
this.Name=other.Name; 
this.Age=other.Age; 
} 
#region ICloneable Members 
// Type safe Clone 
public Person Clone() { return new Person(this); } 
//  ICloneable  implementation 
object ICloneable.Clone() 
{ 
return Clone(); 
} 
#endregion 
} 
Later to be used as follows: 
{ 
Person bob=new Person("Bob", 25); 
Person bob_clone=bob.Clone(); 
Debug.Assert(bob_clone.Name==bob.Name); 
bob.Age=56; 
Debug.Assert(bob.Age!=bob.Age); 
} 
Notice that changing the age of bob does not change the age of bob_clone. This is because the design uses cloning 
instead of assigning of (reference) variables. 

0 Comment's

Comment Form

Submit Comment