Shallow copy or Deep copy?

c#, deep-copy, shallow-copy

Solution

From the link here

Shallow copies duplicate as little as possible. A shallow copy of a collection is a copy of the collection structure, not the elements. With a shallow copy, two collections now share the individual elements.

Deep copies duplicate everything. A deep copy of a collection is two collections with all of the elements in the original collection duplicated.

Your example is creating a shallow copy.

A ob1 = new A();
ob1.a = 10;
A ob2 = new A();
ob2 = ob1;

ob1.a = 5; // <-- If you see value of ob2.a after this line, it will be 5.

Deep copy will be -

 A ob1 = new A();
 ob1.a = 10;
 A ob2 = new A();
 ob2.a = ob1.a;

 ob1.a = 5; // <-- If you see value of ob2.a after this line, it will be 10.

Problem

I am a bit new to these two methods of copying one object into the other. I am confused and unable to spot out the major difference between deep copy and shallow copy.. I had gone through a lots of theory regarding this, but I need explanation with proper examples.. I have program in which I copy one object into another. --> ``` class A { public int a = 0; public void display() { Console.WriteLine("The value of a is " + a); } } class Program { static void Main(string[] args) { A ob1 = new A(); ob1.a = 10; ob1.display(); A ob2 = new A(); ob2 = ob1; ob2.display(); Console.Read(); } } ``` Is this a shallow copy or a deep copy ? Can anyone please provide the answer with reason. If it is a deep copy, then please provide the code for shallow copy for this program doing the same job of object copying, and the other way around.. If the above is a shallow copy, then even this should be a shallow copy--> ``` A ob1 = new A(); ob1.a = 10; ob1.display(); A ob2 = ob1; ob2.a = 444; ob1.display(); ```

Original source

Related problems