C# 不会为对象提供复制构造函数,但是,您可以自己编写。
在下面的示例中,Person
类定义采用 Person
实例作为其参数的复制构造函数。 将参数属性的值赋给 Person
新实例的属性。 代码包含一个备用复制构造函数,可以将想要复制的实例的 Name
和 Age
属性发送到选件类的实例构造函数中。
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
转载于:https://blog.51cto.com/jiaojusuimu/1876738