Maison >développement back-end >C++ >Comment puis-je créer une copie complète d'un objet personnalisé en 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>
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>
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!