Maison >développement back-end >C++ >Comment créer de véritables copies d'objets en C# lorsqu'il s'agit de types référence ?
Clonage d'objets en C# : Comprendre les types de référence
En C#, les objets sont principalement des types référence, ce qui signifie qu'ils font référence à l'emplacement mémoire où leurs données sont stockées. Cela contraste avec les types valeur, qui contiennent leurs données directement dans leurs variables. Lorsqu'une copie d'un type référence est créée, elle crée uniquement une copie de la référence, pas les données réelles vers lesquelles elle pointe.
Exemple : Comprendre les types de référence
Considérez le code suivant :
<code class="language-csharp">public class MyClass { public int val; } public struct myStruct { public int val; } public class Program { public static void Main(string[] args) { MyClass objectA = new MyClass(); MyClass objectB = objectA; objectA.val = 10; objectB.val = 20; Console.WriteLine($"objectA.val = {objectA.val}"); Console.WriteLine($"objectB.val = {objectB.val}"); } }</code>
La sortie de ce code montre que malgré les modifications, objectA et objectB ont la même valeur, indiquant qu'ils font référence au même emplacement mémoire.
Cloner un objet de type référence
Pour créer une copie d'un objet de type référence différent de l'objet d'origine, vous devez cloner l'objet. Cela implique la création d'un nouvel objet qui possède les mêmes propriétés et valeurs que l'objet d'origine, mais qui est stocké dans un emplacement mémoire distinct.
Utiliser l'interface IClonable
En C#, vous pouvez utiliser l'interface ICloneable pour cloner des objets. Les classes qui implémentent cette interface fournissent une méthode Clone qui crée une copie de l'objet.
Ce qui suit est un exemple d'utilisation de l'interface ICloneable :
<code class="language-csharp">public class MyClass : ICloneable { public string test; public object Clone() { return this.MemberwiseClone(); } }</code>
<code class="language-csharp">MyClass a = new MyClass(); MyClass b = (MyClass)a.Clone();</code>
Dans cet exemple, la méthode Clone fournie par l'interface ICloneable est remplacée pour créer un nouvel objet avec les mêmes propriétés que l'objet d'origine, clonant ainsi l'objet.
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!