C# 不会为对象提供复制构造函数,但是,您可以自己编写。

在下面的示例中,Person 定义采用 Person 实例作为其参数的复制构造函数。  将参数属性的值赋给 Person 新实例的属性。  代码包含一个备用复制构造函数,可以将想要复制的实例的 NameAge 属性发送到选件类的实例构造函数中。

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




备注:转自https://msdn.microsoft.com/zh-cn/library/ms173116.aspx