অগভীর অনুলিপি −
একটি বস্তুর একটি অগভীর অনুলিপি "প্রধান" বস্তুকে অনুলিপি করে, কিন্তু অভ্যন্তরীণ বস্তুগুলিকে অনুলিপি করে না।
"অভ্যন্তরীণ বস্তু" মূল বস্তু এবং এর অনুলিপির মধ্যে ভাগ করা হয়৷
অগভীর কপির সমস্যা হল দুটি বস্তু স্বাধীন নয়। আপনি যদি একটি বস্তু পরিবর্তন করেন, তবে পরিবর্তনটি অন্য বস্তুতে প্রতিফলিত হবে।
ডিপ কপি −
একটি গভীর অনুলিপি একটি বস্তুর সম্পূর্ণ স্বাধীন অনুলিপি। যদি আমরা আমাদের অবজেক্ট কপি করি, তাহলে আমরা সম্পূর্ণ অবজেক্ট স্ট্রাকচার কপি করব।
আপনি যদি একটি বস্তু পরিবর্তন করেন, তবে পরিবর্তনটি অন্য বস্তুতে প্রতিফলিত হবে না।
উদাহরণ
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