Gewusst wie: Schreiben eines Kopierkonstruktors (C#-Programmierhandbuch)
Anders als manche andere Sprachen stellt C# keinen Kopierkonstruktor bereit. Wenn Sie ein neues Objekt erstellen und die Werte aus einem bestehenden Objekt kopieren möchten, müssen Sie die entsprechende Methode selbst schreiben.
Beispiel
In diesem Beispiel enthält die Person-Klasse einen Konstruktor, der ein anderes Objekt vom Typ Person als Argument annimmt. Die Inhalte der Felder in diesem Objekt werden dann den Feldern im neuen Objekt zugewiesen. Ein alternativer Kopierkonstruktor sendet die Felder name und age des Objekts zum Kopieren in den Instanzkonstruktor der Klasse.
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
Siehe auch
Referenz
Klassen und Strukturen (C#-Programmierhandbuch)
Konstruktoren (C#-Programmierhandbuch)
Destruktoren (C#-Programmierhandbuch)