Inleiding tot Copy Constructor in C #

De constructor, die variabelen van een ander object kopieert en een nieuw object maakt, wordt een kopieerconstructor genoemd. In C # is de kopie-constructor ook een geparametriseerde constructor. Een geparametriseerde constructor is een constructor die een parameter van hetzelfde klasse-type bevat. De kopie-constructor is handig wanneer we een nieuwe instantie willen initialiseren met de waarden van een bestaande instantie. De Copy-constructor is dus een constructor die in principe de waarden van het ene object naar een ander object verzendt zonder de waarden van het bestaande object te beïnvloeden.

Hoe werkt Copy Constructor in C #?

In C # kunnen we een kopieerconstructor gebruiken als we een klasse willen controleren of de oude waarden van een klasse willen onthouden. C # biedt geen kopieerconstructeur. We kunnen echter een kopieerconstructor samen met een andere constructor gebruiken.

Syntaxis
class Name (
// Parameterized Constructor
public Name(parameters)
(
// code
)
public Name(Name instance of class) //copyconstructor
(
//code
)
)

De naam van de constructor is hetzelfde als de klassennaam. Methode Handtekening van constructor bestaat uit de naam van de methode samen met de parameterlijst. Er kan een willekeurig aantal constructeurs in een klasse zijn. De kopie-constructor is niet de enige constructor in een klasse. Een andere constructor is vereist met een kopieerconstructor om een ​​object te maken. Hierna volgt een voorbeeld dat laat zien hoe u copy constructor kunt gebruiken voor een klasse.

Voorbeeld 1: Zonder kopieerconstructor

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();
)
)

In het bovenstaande voorbeeld is er slechts één geparametriseerde constructor die twee variabelen heeft. getData () wordt gebruikt om de waarden van het object weer te geven.

Output:

Met Copy Constructor

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();
)
)

In het bovenstaande voorbeeld is Demo een klasse die twee constructors bevat. Een kopie-constructor wordt altijd gebruikt met een andere constructor. Een kopie-constructor verzendt de naam- en leeftijdseigenschappen van het ene object naar een ander object. Hieronder staat de output van het bovenstaande programma. Aangezien de eerste waarden voor het bestaande object zijn en de constructor kopieert, kopieert u deze waarden en maakt u een nieuw object met dezelfde waarden als van het bestaande object.

Voorbeeld 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();
))
)

In het bovenstaande programma initialiseren we drie variabelen voor een klassenpen die de eigenschappen van de klasse definieert. Copy constructor kopieert de eigenschappen van een pen van het ene object naar het andere. De functie main () initialiseert een object met de waarden als parameters voor de geparametriseerde constructor. Vervolgens worden de waarden weergegeven met getPendetails (). Het nieuwe object heeft geen invloed op de bestaande objectwaarden. De output wordt hieronder getoond

Output:

Voorbeeld 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();
)
)

Laten we nu het bovenstaande programma begrijpen.

De klasse bevat de variabelen a en b en twee constructors, dwz een geparametriseerde constructor en een copy-constructor.

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;
)
)

De kopie-constructor stuurt de waarden van cal-object naar a en b. De functie krijgt () retourneert de som van a en b. De main () bevindt zich in de klasse Sum die de c1 initialiseert als parameters en vervolgens de constructor kopieert en de waarde van object c1 naar object c2 stuurt. De som van a en b wordt weergegeven met getSum ().

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();
)
)

Output:

Regels voor Copy Constructor in C #

  • De naam van de kopie-constructor moet hetzelfde zijn als de klassenaam.
  • Een andere constructor is vereist met een kopieerconstructor om een ​​object te kopiëren.
  • Er is geen type retourconstructie.
  • Kopieerconstructor kan niet definitief, statisch en abstract zijn.

Conclusie

Dus wanneer u een objectwaarde naar andere objecten wilt kopiëren, kunt u een kopieerconstructor gebruiken. Het is een manier om de compiler te vertellen hoe de waarden van het ene object naar een ander object moeten worden gekopieerd. Het gebeurt wanneer we parameters doorgeven aan een object. ICloneable-interface wordt ook gebruikt door een Clone-methode aan uw klasse toe te voegen die een kopie van het bestaande object maakt. In copy constructor kunt u aangepast gedrag opgeven door een unieke ID te geven of door enkele verplichte velden te kopiëren en andere niet.

Aanbevolen artikelen

Dit is een gids geweest voor Copy Constructor in C #. Hier bespreken we hoe copy constructor werkt in C #, met regels, syntaxis, samen met de juiste voorbeeldcode. U kunt ook door onze gegeven artikelen gaan voor meer informatie-

  1. C # als Verklaring
  2. C # do-while-lus
  3. C # Functies
  4. Kopieer Constructor in C ++ met Voorbeeld
  5. Inleiding tot Constructor in C
  6. Soorten constructor in C # met code-implementatie