Einführung in den Kopierkonstruktor in C #

Der Konstruktor, der Variablen eines anderen Objekts kopiert und ein neues Objekt erstellt, wird als Kopierkonstruktor bezeichnet. 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 eine neue Instanz mit den Werten einer vorhandenen Instanz initialisiert werden soll. Der Copy-Konstruktor ist also ein Konstruktor, der im Grunde die Werte eines Objekts an ein anderes Objekt sendet, ohne die Werte des vorhandenen Objekts zu beeinflussen.

Wie funktioniert Copy Constructor in C #?

In C # können wir einen Kopierkonstruktor verwenden, wenn wir eine Klasse überwachen oder die alten Werte der Klasse speichern 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 entspricht dem Klassennamen. Methodensignatur des Konstruktors besteht aus dem Namen der Methode und ihrer Parameterliste. Eine Klasse kann beliebig viele Konstruktoren enthalten. Der Copy-Konstruktor ist nicht der einzige Konstruktor in einer Klasse. Ein weiterer Konstruktor ist mit einem Kopierkonstruktor erforderlich, um ein Objekt zu erstellen. Das folgende Beispiel zeigt, wie der Kopierkonstruktor für eine Klasse verwendet wird.

Beispiel 1: Ohne Kopierkonstruktor

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 mit zwei Variablen. getData () wird verwendet, um die Werte des Objekts anzuzeigen.

Ausgabe:

Mit dem Kopierkonstruktor

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 den Namen und die Alterseigenschaften eines Objekts an ein anderes Objekt. Unten ist die Ausgabe des obigen Programms. Da die ersten Werte für das vorhandene Objekt und den Kopierkonstruktor gelten, kopieren Sie diese Werte und erstellen ein neues Objekt mit den gleichen Werten wie für das vorhandene Objekt.

Beispiel 2

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. Dann werden die Werte mit getPendetails () angezeigt. Das neue Objekt wirkt sich nicht auf die vorhandenen Objektwerte aus. Die Ausgabe wird unten gezeigt

Ausgabe:

Beispiel 3

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 sowie zwei Konstruktoren, dh 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 von cal object in a und b. Die Funktion gets () liefert die Summe von a und b. Das main () befindet sich in der Klasse Sum, die c1 als Parameter initialisiert und dann kopiert. Der Konstruktor sendet den Wert von Objekt c1 an Objekt c2. 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:

Regeln für den Kopierkonstruktor in C #

  • Der Name des Kopierkonstruktors sollte mit dem Klassennamen übereinstimmen.
  • Ein weiterer Konstruktor ist mit einem Kopierkonstruktor erforderlich, um ein Objekt zu kopieren.
  • Es gibt keinen Rückgabetyp für den Kopierkonstruktor.
  • Der Kopierkonstruktor kann nicht final, statisch und abstrakt sein.

Fazit

Wenn Sie also einen Objektwert in andere Objekte kopieren möchten, können Sie einen Kopierkonstruktor verwenden. Auf diese Weise können Sie dem Compiler mitteilen, wie die Werte eines Objekts in ein anderes Objekt kopiert werden sollen. Es passiert, wenn wir Parameter an ein Objekt übergeben. Die ICloneable-Schnittstelle wird auch verwendet, indem Sie Ihrer Klasse eine Clone-Methode hinzufügen, die eine Kopie des vorhandenen Objekts erstellt. Im Kopierkonstruktor können Sie benutzerdefiniertes Verhalten angeben, indem Sie eine eindeutige ID angeben oder indem Sie einige erforderliche Felder und nicht andere kopieren.

Empfohlene Artikel

Dies war eine Anleitung zum Kopieren von Konstruktoren in C #. Hier diskutieren wir, wie der Kopierkonstruktor in C # mit Regeln, Syntax und entsprechendem Beispielcode funktioniert. Sie können auch in unseren Artikeln nachlesen, um mehr zu erfahren.

  1. C # if-Anweisung
  2. C # do-while-Schleife
  3. C # -Funktionen
  4. Konstruktor in C ++ mit Beispiel kopieren
  5. Einführung in den Konstruktor in C
  6. Arten von Konstruktoren in C # mit Code-Implementierung