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
Libérer: 2025-01-13 12:35:42
original
392 Les gens l'ont consulté

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>
Copier après la connexion
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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal