Copie superficielle

Définition - Que signifie Shallow Copy?

La copie superficielle, en C #, est le processus de création d'un clone d'un objet en instanciant une nouvelle instance du même type que l'objet d'origine et en copiant les membres non statiques de l'objet existant dans le clone. Les membres du type valeur sont copiés petit à petit tandis que les membres du type référence sont copiés de telle sorte que l'objet référencé et son clone font référence au même objet.

En général, la copie superficielle est utilisée lorsque la performance est l'une des exigences avec la condition que l'objet ne sera pas muté dans toute l'application. En passant le clone contenant des données immuables, la possibilité de corruption par n'importe quel code est éliminée. La copie superficielle s'avère efficace là où les références d'objet permettent aux objets d'être transmis par adresse mémoire afin que l'objet entier n'ait pas besoin d'être copié.

La copie superficielle est également appelée copie par membre.

Definir Tech explique Shallow Copy

La copie superficielle est similaire à la copie profonde dans l'affectation de chaque membre d'un objet à celui d'un autre objet, mais elle diffère dans la manière dont le champ de type référence est copié. Contrairement à la copie superficielle où la référence est uniquement copiée, dans la copie complète, une nouvelle copie de l'objet référencé est créée.

Par exemple, considérons un objet employé qui contient les détails des informations personnelles, y compris une liste d'objets d'adresse qui stockent plusieurs adresses d'employé. En effectuant une copie superficielle d'un objet employé, un clone de l'objet employé peut être créé avec des références à la même liste d'objets d'adresse qui appartiennent à l'objet employé d'origine.

Les méthodes pour effectuer une copie superficielle comprennent:

  • Appelez la méthode MemberwiseClone de l'objet
  • Créez un clone manuellement grâce à une méthode personnalisée fastidieuse mais facile à contrôler
  • Utilisez une technique de réflexion qui fournit une fonction automatisée pour effectuer une copie superficielle, mais avec une surcharge de performance
  • Utilisez une méthode de sérialisation plus lente que la réflexion mais automatisée et simple

La copie superficielle ne peut pas être utilisée lorsque l'objet a des membres de type référence qui sont fréquemment modifiés. Cette définition a été écrite dans le contexte de C #