Maison  >  Article  >  développement back-end  >  Qu’est-ce que la copie superficielle et en quoi est-elle différente de la copie profonde en C# ?

Qu’est-ce que la copie superficielle et en quoi est-elle différente de la copie profonde en C# ?

王林
王林avant
2023-09-06 19:41:09597parcourir

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

Copie superficielle

La copie superficielle fait référence à la copie de la partie "principale" d'un objet, mais pas à la copie des parties internes objets.

Les "objets internes" sont partagés entre l'objet original et sa copie.

Le problème avec la copie superficielle est que les deux objets ne sont pas indépendants si vous. Modifiez un objet et les modifications seront reflétées dans l’autre objet.

Copie profonde

Une copie profonde est une copie complètement indépendante d'un objet. Si nous copions notre objet, copierait toute la structure de l'objet.

Si vous modifiez un objet, le changement ne sera pas reflété dans l'autre objet.

Exemple

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

Sortie

10 10
5 5
10 10
5 10

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer