Der Konstruktor, der Variablen eines anderen Objekts kopiert und ein neues Objekt erstellt, wird Kopierkonstruktor genannt. In C# ist der Kopierkonstruktor auch ein parametrisierter Konstruktor. Ein parametrisierter Konstruktor ist ein Konstruktor, der einen Parameter desselben Klassentyps enthält. Der Kopierkonstruktor ist immer dann nützlich, wenn wir eine neue Instanz mit den Werten einer vorhandenen Instanz initialisieren möchten. Der Copy-Konstruktor ist also ein Konstruktor, der grundsätzlich die Werte eines Objekts an ein anderes Objekt sendet, ohne die Werte eines vorhandenen Objekts zu beeinflussen.
In C# können wir einen Kopierkonstruktor verwenden, wenn wir eine Klasse prüfen oder uns die alten Werte der Klasse merken möchten. C# bietet keinen Kopierkonstruktor. Wir können jedoch einen Kopierkonstruktor zusammen mit einem anderen Konstruktor verwenden.
Syntax
class Name { // Parameterized Constructor public Name(parameters) { // code } public Name(Name instance of class) //copyconstructor { //code } }
Der Name des Konstruktors ist derselbe wie sein Klassenname. Die Methodensignatur des Konstruktors besteht aus dem Namen der Methode und ihrer Parameterliste. Eine Klasse kann beliebig viele Konstruktoren enthalten. Der Kopierkonstruktor ist nicht der einzige Konstruktor in einer Klasse. Mit einem Kopierkonstruktor ist ein weiterer Konstruktor erforderlich, um ein Objekt zu erstellen. Das folgende Beispiel zeigt, wie der Kopierkonstruktor für eine Klasse verwendet wird.
Code
class Demo { //variables string name; int age; public Demo(string name, int age) //parameterized constructor { this.name = name; this.age = age; } public void getData() { Console.WriteLine("Name is:{0}", name); Console.WriteLine("Age is:{0}", age); } } class Program { // Main method static void Main(string[] args) { Demo obj = new Demo("John",20); obj.getData(); Console.ReadLine(); } }
Im obigen Beispiel gibt es nur einen parametrisierten Konstruktor, der zwei Variablen hat. getData() wird verwendet, um die Werte des Objekts anzuzeigen.
Ausgabe:
Code
class Demo { string name; int age; public Demo(string name, int age) //paramertrized constructor { this.name = name; this.age = age; } public Demo(Demo d) //copy constructor { this.name = d.name; this.age = d.age; } public void getData() { Console.WriteLine("Name is:{0}", name); Console.WriteLine("Age is:{0}", age); } } class Program { //main method static void Main(string[] args){ Demo obj = new Demo("John",20); obj.getData(); Demo obj1 = new Demo(obj); //new object obj1.getData(); Console.ReadLine(); } }
Im obigen Beispiel ist Demo eine Klasse, die zwei Konstruktoren enthält. Ein Kopierkonstruktor wird immer mit einem anderen Konstruktor verwendet. Ein Kopierkonstruktor sendet die Namens- und Alterseigenschaften eines Objekts an ein anderes Objekt. Unten sehen Sie die Ausgabe des obigen Programms, da die ersten Werte für das vorhandene Objekt gelten. Kopieren Sie den Konstruktor, kopieren Sie diese Werte und erstellen Sie ein neues Objekt mit denselben Werten wie das vorhandene Objekt.
Code
class pen { // variables private string name; private string color; private int price; // Copy constructor public pen(pen a) { name = a.name; color = a.color;quantity = a.price; } // Parameterized constructor public pen(string name, string color, int price){ this.name = name; this.color = color; this.quantity =price; } public void getPendetails() {Console.WriteLine("Name is:{0}", name); Console.WriteLine("color is:{0}", color); Console.WriteLine("price is:{0}", price); } // Main Method public static void Main() { // Create a new object. pen p1 = new pen("Parker", "Blue", 30); pen p2 = new pen(p1); p2.getPendetails(); Console.ReadLine(); }} }
Im obigen Programm initialisieren wir drei Variablen für einen Klassenstift, der die Eigenschaften der Klasse definiert. Der Kopierkonstruktor kopiert die Eigenschaften eines Stifts von einem Objekt auf ein anderes. Die Funktion main() initialisiert ein Objekt mit den Werten als Parameter für den parametrisierten Konstruktor. Anschließend werden die Werte mit getPendetails() angezeigt. Das neue Objekt hat keinen Einfluss auf die vorhandenen Objektwerte. Die Ausgabe wird unten angezeigt.
Ausgabe:
Code
class Calculate { //variables private int a; private int b; public Calculate(int x, int y) // parameterized constructor { a = x; b = y; } public Calculate(Calculate cal) //copy constructor { a = cal.a; b = cal.b; } public int getSum() { return a + b; } } class Sum { // main method static void Main(string[] args) { // create a new object Calculate c1 = new Calculate(34, 4); Calculate c2 = new Calculate(c1); c2.getSum(); Console.ReadLine(); } }
Lassen Sie uns nun das obige Programm verstehen.
Die Klasse enthält die Variablen a und b und zwei Konstruktoren, nämlich einen parametrisierten Konstruktor und einen Kopierkonstruktor.
Code
class Calculate { //variables private int a; private int b; public Calculate(int x, int y) //parameterized constructor { a = x; b = y; } public Calculate(Calculate cal) //copy constructor { a = cal.a; b = cal.b; } public int getSum() { return a + b; } }
Der Kopierkonstruktor sendet die Werte des Cal-Objekts in a und b. Die Funktion gets() gibt die Summe von a und b zurück. Die Funktion main() befindet sich in der Klasse Sum, die c1 als Parameter initialisiert und dann den Konstruktor kopiert, indem er den Wert von Objekt c1 an Objekt c2 sendet. Die Summe von a und b wird mit getSum() angezeigt.
Code
class Sum { // main method static void Main(string[] args) { Calculate c1 = new Calculate(34, 4); Calculate c2 = new Calculate(c1); c2.getSum(); Console.ReadLine(); } }
Ausgabe:
Wenn Sie also einen Objektwert auf andere Objekte kopieren möchten, können Sie einen Kopierkonstruktor verwenden. Auf diese Weise können Sie dem Compiler mitteilen, wie er die Werte eines Objekts in ein anderes Objekt kopieren soll. Dies geschieht, wenn wir Parameter an ein Objekt übergeben. Die ICloneable-Schnittstelle wird auch verwendet, indem Sie Ihrer Klasse eine Clone-Methode hinzufügen und eine Kopie des vorhandenen Objekts erstellen. Im Kopierkonstruktor können Sie benutzerdefiniertes Verhalten festlegen, indem Sie eine eindeutige ID angeben oder einige erforderliche Felder kopieren und andere nicht.
Das obige ist der detaillierte Inhalt vonKonstruktor in C# kopieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!