#827 – Making a Deep Copy with a Copy Constructor
April 22, 2013 4 Comments
The semantics that you use within a copy constructor can be to make a shallow copy of an object or a deep copy.
In the example below, the copy constructor for Dog makes a deep copy of the object passed in. In this case, that means that the new Dog that is created will also have a new instance of DogCollar object, copied from the DogCollar property of the original Dog object.
public class Dog
{
public string Name { get; set; }
public int Age { get; set; }
public DogCollar Collar { get; set; }
// Constructor that takes individual property values
public Dog(string name, int age)
{
Name = name;
Age = age;
}
// Copy constructor (deep copy)
public Dog(Dog otherDog)
{
Name = otherDog.Name;
Age = otherDog.Age;
Collar = (otherDog.Collar != null) ?
new DogCollar(otherDog.Collar.Length, otherDog.Collar.Width) :
null;
}
}



