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

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

王林
Lepaskan: 2023-09-06 19:41:09
ke hadapan
651 orang telah melayarinya

什么是浅复制以及它与 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;
}
Salin selepas log masuk

Output

10 10
5 5
10 10
5 10
Salin selepas log masuk

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!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan