Maison >développement back-end >C++ >Comment puis-je créer une copie fidèle d'un objet en C# ?

Comment puis-je créer une copie fidèle d'un objet en C# ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-13 12:35:42449parcourir

How Can I Create a True Copy of an Object in C#?

Copier des objets en C# : analyse approfondie

L'extrait de code suivant illustre un scénario dans lequel deux références d'objet objectA et objectB pointent vers la même instance de la classe MyClass. Il s'agit d'un comportement courant pour les types référence en C# puisqu'ils font uniquement référence à un emplacement mémoire plutôt que de contenir les données elles-mêmes. Cependant, dans certains cas, il est nécessaire de créer des copies totalement indépendantes de l'objet, pointant vers des adresses mémoire différentes.

Utilisez ICloneable pour une copie superficielle

Afin d'implémenter une copie superficielle (en copiant uniquement l'état des membres de type non référence de l'objet d'origine), C# fournit l'interface ICloneable. L'implémentation de cette interface permet à une classe de définir un comportement de clonage personnalisé.

<code class="language-csharp">class myClass : ICloneable
{
    public String test;
    public object Clone()
    {
        return this.MemberwiseClone();
    }
}</code>
La méthode

MemberwiseClone effectue une copie superficielle de l'objet, en copiant les valeurs de tous les membres de type non référence. Nous créons un mécanisme de clonage personnalisé pour la classe ICloneable en implémentant MemberwiseClone et en remplaçant sa méthode Clone par MyClass .

Créer des objets indépendants

Pour créer une instance autonome de MyClass, utilisez la méthode Clone :

<code class="language-csharp">myClass a = new myClass();
myClass b = (myClass)a.Clone();</code>

Cela fera objectB faire référence à une nouvelle instance de MyClass qui a une adresse mémoire différente de celle de objectA . Cependant, il est important de noter qu'il s'agit d'une copie superficielle, ce qui signifie que tous les membres de type référence au sein de l'objet pointent toujours vers le même emplacement mémoire que l'objet d'origine. Pour implémenter une copie complète, une copie supplémentaire des membres de type référence est généralement requise.

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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn