Partager via


Comment : écrire un constructeur de copie (Guide de programmation C#)

C# ne fournit pas de constructeur de copie pour les objets, mais vous pouvez en écrire un vous-même.

Exemple

Dans l'exemple suivant, la classe Person 0b0thckt(v=vs.120).md définit un constructeur de copie qui accepte comme argument une instance de Person. Les valeurs des propriétés de l'argument sont assignées aux propriétés de la nouvelle instance Person. Le code contient un autre constructeur de copie qui envoie les propriétés Name et Age de l'instance que vous voulez copier au constructeur d'instance de la classe.

class Person
{
    // Copy constructor. 
    public Person(Person previousPerson)
    {
        Name = previousPerson.Name;
        Age = previousPerson.Age;
    }

    //// Alternate copy constructor calls the instance constructor. 
    //public Person(Person previousPerson) 
    //    : this(previousPerson.Name, previousPerson.Age) 
    //{ 
    //} 

    // Instance constructor. 
    public Person(string name, int age)
    {
        Name = name;
        Age = age;
    }

    public int Age { get; set; }

    public string Name { get; set; }

    public string Details()
    {
        return Name + " is " + Age.ToString();
    }
}

class TestPerson
{
    static void Main()
    {
        // Create a Person object by using the instance constructor.
        Person person1 = new Person("George", 40);

        // Create another Person object, copying person1.
        Person person2 = new Person(person1);

        // Change each person's age. 
        person1.Age = 39;
        person2.Age = 41;

        // Change person2's name.
        person2.Name = "Charles";

        // Show details to verify that the name and age fields are distinct.
        Console.WriteLine(person1.Details());
        Console.WriteLine(person2.Details());

        // Keep the console window open in debug mode.
        Console.WriteLine("Press any key to exit.");
        Console.ReadKey();
    }
}
// Output:  
// George is 39 
// Charles is 41

Voir aussi

Référence

Classes et structs (Guide de programmation C#)

Constructeurs (guide de programmation C#)

Destructeurs (Guide de programmation C#)

ICloneable

Concepts

Guide de programmation C#