उथली कॉपी -
किसी वस्तु की उथली प्रतिलिपि "मुख्य" वस्तु की प्रतिलिपि बनाती है, लेकिन आंतरिक वस्तुओं की प्रतिलिपि नहीं बनाती है।
"आंतरिक वस्तुओं" को मूल वस्तु और उसकी प्रति के बीच साझा किया जाता है।
उथली प्रतिलिपि के साथ समस्या यह है कि दो वस्तुएं स्वतंत्र नहीं हैं। यदि आप एक वस्तु को संशोधित करते हैं, तो परिवर्तन दूसरी वस्तु में दिखाई देगा।
डीप कॉपी -
एक गहरी प्रति किसी वस्तु की पूरी तरह से स्वतंत्र प्रति है। अगर हम अपनी वस्तु की नकल करते हैं, तो हम पूरी वस्तु संरचना की नकल करेंगे।
यदि आप एक वस्तु को संशोधित करते हैं, तो परिवर्तन दूसरी वस्तु में प्रतिबिंबित नहीं होगा।
उदाहरण
class Program{ static void Main(string[] args){ //Shallow Copy ShallowCopy obj = new ShallowCopy(); obj.a = 10; ShallowCopy obj1 = new ShallowCopy(); obj1 = obj; Console.WriteLine("{0} {1}", obj1.a, obj.a); // 10,10 obj1.a = 5; Console.WriteLine("{0} {1}", obj1.a, obj.a); //5,5 //Deep Copy DeepCopy d = new DeepCopy(); d.a = 10; DeepCopy d1 = new DeepCopy(); d1.a = d.a; Console.WriteLine("{0} {1}", d1.a, d.a); // 10,10 d1.a = 5; Console.WriteLine("{0} {1}", d1.a, d.a); //5,10 Console.ReadLine(); } } class ShallowCopy{ public int a = 10; } class DeepCopy{ public int a = 10; }
आउटपुट
10 10 5 5 10 10 5 10