Introduksjon til Copy Constructor i C #

Konstruktøren, som kopierer variabler av et annet objekt og oppretter et nytt objekt kalles en kopikonstruktør. I C # er kopikonstruktøren også en parameterisert konstruktør. En parameterisert konstruktør er en konstruktør som inneholder en parameter av samme klassetype. Kopikonstruktøren er nyttig når vi vil initialisere en ny instans til verdiene til en eksisterende instans. Så Copy-konstruktøren er en konstruktør som i utgangspunktet sender verdiene til ett objekt til et annet objekt uten å påvirke verdiene til eksisterende objekt.

Hvordan fungerer Copy Constructor i C #?

I C # kan vi bruke en kopikonstruktør hvis vi ønsker å revidere en klasse eller for å huske de gamle klassens verdier. C # gir ikke en kopikonstruktør. Vi kan imidlertid bruke en kopi-konstruktør sammen med en annen konstruktør.

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

Navnet på konstruktøren er det samme som klassens navn. Metode Signatur av konstruktør består av metodens navn sammen med parameterlisten. Det kan være et hvilket som helst antall konstruktører i en klasse. Kopikonstruktøren er ikke den eneste konstruktøren i en klasse. En annen konstruktør kreves med en kopikonstruktør for å lage et objekt. Følgende er eksemplet som viser hvordan du bruker kopikonstruktør for en klasse.

Eksempel 1: Uten Copy Constructor

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 eksemplet over er det bare en parameterisert konstruktør som har to variabler. getData () brukes til å vise verdiene til objektet.

Produksjon:

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 eksemplet over er Demo en klasse som inneholder to konstruktører. En kopikonstruktør brukes alltid sammen med en annen konstruktør. En kopikonstruktør sender navn og aldersegenskaper for ett objekt til et annet objekt. Nedenfor er utgangen fra programmet over. Som de første verdiene er for det eksisterende objektet og kopier konstruktøren kopierer disse verdiene og oppretter et nytt objekt med de samme verdiene som det eksisterende objektet.

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 programmet over initialiserer vi tre variabler for en klassepenn som definerer egenskapene til klassen. Copy constructor kopierer egenskapene til en penn fra et objekt til et annet. Hovedfunksjonen () initialiserer et objekt med verdiene som parametere for den parameteriserte konstruktøren. Deretter vises verdiene ved hjelp av getPendetails (). Det nye objektet påvirker ikke de eksisterende objektverdiene. Utgangen vises nedenfor

Produksjon:

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

La oss nå forstå ovenstående program.

Klassen inneholder variablene a og b og to konstruktører dvs. en parameterisert 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 verdiene til cal object til a og b. Funksjonen får () returnerer summen av a og b. Hoveddelen () er i klassen Sum som initialiserer c1 som parametere og deretter kopierer konstruktør sendes verdien til objektet c1 til objektet c2. Summen av a og b vises ved hjelp av 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();
)
)

Produksjon:

Regler for Copy Constructor i C #

  • Navnet på kopikonstruktøren skal være det samme som klassens navn.
  • En annen konstruktør kreves med en kopikonstruktør for å kopiere et objekt.
  • Det finnes ingen returtype kopikonstruktør.
  • Kopikonstruktør kan ikke være endelig, statisk og abstrakt.

Konklusjon

Så når du vil kopiere en gjenstandsverdi til andre objekter, kan du bruke en kopikonstruktør. Det er en måte å fortelle kompilatoren hvordan du skal kopiere verdiene til ett objekt i et annet objekt. Det skjer når vi sender parametere til et objekt. ICloneable grensesnitt brukes også ved å legge til en klone-metode i klassen din som lager en kopi av det eksisterende objektet. I kopikonstruktør kan du spesifisere tilpasset oppførsel ved å gi en unik ID eller ved å kopiere noen obligatoriske felt og ikke andre.

Anbefalte artikler

Dette har vært 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å gå gjennom artiklene våre for å lære mer-

  1. C # hvis uttalelse
  2. C # do-while loop
  3. C # Funksjoner
  4. Kopier konstruktør i C ++ med eksempel
  5. Introduksjon til konstruktør i C
  6. Typer konstruktør i C # med kodeimplementering