Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Apakah salinan cetek dan bagaimana ia berbeza daripada salinan dalam dalam C#?

Apakah salinan cetek dan bagaimana ia berbeza daripada salinan dalam dalam C#?

王林
王林ke hadapan
2023-09-06 19:41:09599semak imbas

什么是浅复制以及它与 C# 中的深复制有何不同?

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.

Contoh

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;
}

Output

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!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam