与有些语言不同,C# 不提供复制构造函数。 如果您创建了新的对象并希望从现有对象复制值,您必须自行编写适当的方法。
示例
在本示例中,Person 类包含一个构造函数,该构造函数接受另一个 Person 类型的对象作为其参数。 然后此对象的字段中的内容将分配给新对象中的字段。 备用复制构造函数将要复制的对象的 name 和 age 字段发送到类的实例构造函数。
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