Salinan cetek −
Salinan cetek merujuk kepada menyalin bahagian "utama" objek, tetapi tidak menyalin bahagian dalaman objek.
"Objek dalam" dikongsi antara objek asal dan salinannya.
Masalah dengan salinan cetek ialah kedua-dua objek itu tidak bebas Jika anda Ubah suai satu objek dan perubahan akan ditunjukkan dalam objek lain.
Salinan dalam −
Salinan dalam ialah salinan objek yang bebas sepenuhnya. Jika kita menyalin objek kita, akan menyalin keseluruhan struktur objek.
Jika anda mengubah suai satu objek, perubahan tidak akan dicerminkan dalam objek yang lain.
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
Atas ialah kandungan terperinci Apakah salinan cetek dan bagaimana ia berbeza daripada salinan dalam dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!