Table des matières:
Définition - Que signifie la copie superficielle?
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 vers 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 se réfèrent au même objet.
En général, une copie superficielle est utilisée lorsque les performances sont l'une des exigences ainsi que la condition selon laquelle l'objet ne subira pas de mutation tout au long de 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 lorsque les références d'objet permettent de passer des objets par adresse mémoire afin que l'objet entier n'ait pas besoin d'être copié.
La copie superficielle est également appelée copie membre.
Techopedia explique Shallow Copy
La copie superficielle est similaire à la copie profonde dans l'affectation de chaque membre d'un objet à celle d'un autre objet, mais elle diffère dans la manière dont le champ du type de référence est copié. Contrairement à la copie superficielle où la référence est uniquement copiée, en copie profonde, une nouvelle copie de l'objet référencé est créée.
Par exemple, considérons un objet employé qui contient des détails sur les 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 incluent:- Appelez la méthode MemberwiseClone de l'objet
- Créez un clone manuellement via une méthode personnalisée qui est fastidieuse mais facile à contrôler
- Utilisez une technique de réflexion qui fournit une fonction automatisée pour effectuer une copie superficielle, mais avec des frais généraux de performance
- Utilisez une méthode de sérialisation plus lente que la réflexion mais automatisée et simple
