Procedura: scrivere un costruttore di copia (Guida per programmatori C#)

Diversamente da alcuni linguaggi, in C# non è disponibile un costruttore di copia. Se si crea un nuovo oggetto e si desidera copiare i valori da un oggetto esistente, sarà quindi necessario scrivere il metodo appropriato.

Esempio

In questo esempio, la classe Person contiene un costruttore che accetta come argomento un altro oggetto di tipo Person. Il contenuto dei campi di tale oggetto viene quindi assegnato ai campi del nuovo oggetto. Un costruttore di copia alternativo invia i campi name e age dell'oggetto da copiare al costruttore di istanza della 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

Vedere anche

Riferimenti

Classi e struct (Guida per programmatori C#)

Costruttori (Guida per programmatori C#)

Distruttori (Guida per programmatori C#)

ICloneable

Concetti

Guida per programmatori C#