Introduktion til Copy Constructor i C #

Konstruktøren, der kopierer variabler af et andet objekt og opretter et nyt objekt kaldes en kopikonstruktør. I C # er kopikonstruktøren også en parameteriseret konstruktør. En parameteriseret konstruktør er en konstruktør, der indeholder en parameter af samme klassetype. Kopikonstruktøren er nyttig, når vi vil initialisere en ny instans til værdierne af en eksisterende instans. Så kopikonstruktøren er en konstruktør, der dybest set sender værdierne af et objekt til et andet objekt uden at påvirke værdierne for det eksisterende objekt.

Hvordan fungerer Copy Constructor i C #?

I C # kan vi bruge en kopikonstruktør, hvis vi ønsker at revidere en klasse eller huske klassens gamle værdier. C # indeholder ikke en kopi-konstruktør. Vi kan dog bruge en kopi-konstruktør sammen med en anden konstruktør.

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

Konstruktørens navn er det samme som klassens navn. Metode Underskrift af konstruktør består af metodens navn sammen med dens parameterliste. Der kan være et vilkårligt antal konstruktører i en klasse. Kopikonstruktøren er ikke den eneste konstruktør i en klasse. En anden konstruktør kræves med en kopikonstruktør for at oprette et objekt. Følgende er eksemplet, der viser, hvordan man bruger kopikonstruktør til en klasse.

Eksempel 1: Uden kopi-konstruktør

Kode

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

I ovenstående eksempel er der kun en parameteriseret konstruktør, der har to variabler. getData () bruges til at vise objektets værdier.

Produktion:

Med Copy Constructor

Kode

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

I ovenstående eksempel er Demo en klasse, der indeholder to konstruktører. En kopi-konstruktør bruges altid sammen med en anden konstruktør. En kopikonstruktør sender navn og aldersegenskaber på et objekt til et andet objekt. Nedenfor er output fra ovenstående program. Da de første værdier gælder for det eksisterende objekt og kopikonstruktør kopierer disse værdier og opretter et nyt objekt med de samme værdier som det eksisterende objekt.

Eksempel 2

Kode

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

I ovenstående program initialiserer vi tre variabler for en klassepen, der definerer egenskaberne for klassen. Copy constructor kopierer egenskaberne for en pen fra et objekt til et andet. Hovedfunktionen () initialiserer et objekt med værdierne som parametre for den parameteriserede konstruktør. Derefter vises værdierne ved hjælp af getPendetails (). Det nye objekt påvirker ikke de eksisterende objektværdier. Outputet er vist nedenfor

Produktion:

Eksempel 3

Kode

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

Lad os nu forstå ovenstående program.

Klassen indeholder variablerne a og b og to konstruktører, dvs. en parameteriseret konstruktør og en kopikonstruktør.

Kode

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

Kopikonstruktøren sender værdierne for cal objekt til a og b. Funktionen får () returnerer summen af ​​a og b. Hoved () er i klassen Sum, der initialiserer c1 som parametre og derefter kopierer konstruktør sendes værdien af ​​objekt c1 til objekt c2. Summen af ​​a og b vises ved hjælp af getSum ().

Kode

class Sum
(
// main method
static void Main(string() args)
(
Calculate c1 = new Calculate(34, 4);
Calculate c2 = new Calculate(c1);
c2.getSum();
Console.ReadLine();
)
)

Produktion:

Regler for kopikonstruktør i C #

  • Navnet på kopikonstruktøren skal være det samme som klassens navn.
  • En anden konstruktør kræves med en kopikonstruktør for at kopiere et objekt.
  • Der er ingen returneringstype af kopikonstruktør.
  • Kopikonstruktør kan ikke være endelig, statisk og abstrakt.

Konklusion

Så når du vil kopiere en objektværdi til andre objekter, kan du bruge en kopi-konstruktør. Det er en måde at fortælle kompilatoren, hvordan man kopierer værdierne for et objekt i et andet objekt. Det sker, når vi overfører parametre til et objekt. ICloneable interface bruges også ved at tilføje en Clone-metode til din klasse, der opretter en kopi af det eksisterende objekt. I kopikonstruktør kan du specificere brugerdefineret opførsel ved at give et unikt ID eller ved at kopiere nogle påkrævede felter og ikke andre.

Anbefalede artikler

Dette har været en guide til Copy Constructor i C #. Her diskuterer vi, hvordan fungerer konstruktør i C # med regler, syntaks sammen med passende prøvekode. Du kan også gennemgå vores givne artikler for at lære mere-

  1. C # hvis erklæring
  2. C # do-while-loop
  3. C # Funktioner
  4. Kopier konstruktør i C ++ med eksempel
  5. Introduktion til konstruktør i C
  6. Konstruktortyper i C # med kodeimplementering

Kategori: