Compartir a través de


Cómo: Escribir un constructor Copy (Guía de programación de C#)

A diferencia de algunos lenguajes, C# no proporciona un constructor Copy. Si crea un nuevo objeto y desea copiar los valores de un objeto existente, tiene que escribir de nuevo el método adecuado.

Ejemplo

En este ejemplo, la clase Person contiene un constructor que toma como argumento otro objeto de tipo Person. El contenido de los campos de este objeto se asigna a continuación a los campos del nuevo objeto. Un constructor de copias alternativo envía los campos age y name del objeto para que se copien en el constructor de instancia de la clase.

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

Vea también

Referencia

Clases y estructuras (Guía de programación de C#)

Constructores (Guía de programación de C#)

Destructores (Guía de programación de C#)

ICloneable

Conceptos

Guía de programación de C#