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 ?

Comment créer de véritables copies d'objets en C# lorsqu'il s'agit de types référence ?

Barbara Streisand
Libérer: 2025-01-13 12:33:52
original
975 Les gens l'ont consulté

How Do I Create True Copies of Objects in C# When Dealing with Reference Types?

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

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

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!

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