Partager via


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

Contrairement à certains langages, C# ne fournit pas de constructeur de copie.Si vous créez un nouvel objet et voulez copier les valeurs d'un objet existant, vous devez écrire vous-même la méthode appropriée.

Exemple

Dans cet exemple, la classePerson contient un constructeur qui utilise comme argument un autre objet de type Person.Le contenu des champs de cet objet est ensuite assigné aux champs du nouvel objet.Un autre constructeur de copie envoie les champs age et name de l'objet à copier au constructeur d'instance de la classe.

class Person
{
    private string name;
    private int age;

    // Copy constructor.
    public Person(Person previousPerson)
    {
        name = previousPerson.name;
        age = previousPerson.age;
    }

    //// Alternate copy contructor calls the instance constructor.
    //public Person(Person previousPerson)
    //    : this(previousPerson.name, previousPerson.age)
    //{
    //}

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

    // Get accessor.
    public string Details
    {
        get
        {
            return name + " is " + age.ToString();
        }
    }
}

class TestPerson
{
    static void Main()
    {
        // Create a new person object.
        Person person1 = new Person("George", 40);

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

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

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#