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

Comment puis-je créer une copie complète d'un objet personnalisé en C# ?

Linda Hamilton
Libérer: 2025-01-13 12:22:43
original
113 Les gens l'ont consulté

How Can I Create a Deep Copy of a Custom Object in C#?

Copie approfondie d'objets personnalisés en C#

Cet article explore le clonage d'objets en C#, en se concentrant sur la distinction entre les types référence et valeur et sur la manière d'obtenir de véritables copies complètes d'objets personnalisés. Nous utiliserons des exemples pour illustrer le comportement de MyClass (un type de référence) et de myStruct (un type de valeur) lorsqu'ils sont attribués. Comme prévu, les modifications apportées à une instance de type référence sont reflétées dans d’autres références car elles partagent le même emplacement mémoire. Cependant, les types de valeur créent des copies indépendantes.

Pour créer une copie authentique d'un objet personnalisé, nous implémentons l'interface ICloneable. Cela nécessite de définir une méthode Clone qui génère une nouvelle instance avec des valeurs de propriété identiques.

Mise en œuvre ICloneable pour la copie approfondie

Le code suivant montre l'implémentation de ICloneable pour une copie complète, en gérant les objets imbriqués :

<code class="language-csharp">class MyClass : ICloneable
{
    public string test;
    public object Clone()
    {
        MyClass newObj = (MyClass)this.MemberwiseClone(); // Shallow copy first

        // Handle nested objects for a deep copy (example)
        // if (this.nestedObject != null)
        // {
        //    newObj.nestedObject = (NestedObjectType)this.nestedObject.Clone();
        // }
        return newObj;
    }
}</code>
Copier après la connexion

MemberwiseClone() crée une copie superficielle. Pour obtenir une copie complète, vous devez explicitement cloner tous les objets imbriqués dans la méthode Clone, comme indiqué dans l'exemple commenté. Cela nécessite un clonage récursif si les objets imbriqués contiennent également des objets imbriqués.

Création d'une copie complète à l'aide de la méthode Clone :

<code class="language-csharp">MyClass a = new MyClass();
MyClass b = (MyClass)a.Clone();</code>
Copier après la connexion

Cela garantit que b est une copie complètement indépendante de a, même si a contient des structures imbriquées complexes. N'oubliez pas d'adapter la section de clonage d'objets imbriqués à votre structure de classe spécifique.

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