Uvod v program za kopiranje v C #

Konstruktor, ki kopira spremenljivke drugega predmeta in ustvari nov objekt, se imenuje konstruktor kopiranja. V C # je konstruktor kopiranja tudi parametriziran konstruktor. Parametriziran konstruktor je konstruktor, ki vsebuje parameter istega tipa razreda. Konstruktor kopiranja je uporaben, kadar želimo inicializirati nov primerek v vrednosti obstoječega primerka. Torej, konstruktor Copy je konstruktor, ki v osnovi pošilja vrednosti enega predmeta drugemu objektu, ne da bi vplival na vrednosti obstoječega predmeta.

Kako deluje program za kopiranje v C #?

V C # lahko uporabimo konstruktor kopij, če želimo preučiti razred ali se spomniti starih vrednosti razreda. C # ne nudi konstruktorja kopij. Vendar lahko uporabimo kopiranje konstruktorja skupaj z drugim konstruktorjem.

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

Ime konstruktorja je enako imenu njegovega razreda. Metoda Podpis konstruktorja sestoji iz imena metode in njenega seznama parametrov. V razredu je lahko poljubno število konstruktorjev. Konstruktor kopiranja ni edini konstruktor v razredu. Za ustvarjanje predmeta je potreben drug konstruktor s konstruktorjem kopij. Sledi primer, ki prikazuje, kako uporabljati konstruktor kopij za razred.

Primer 1: Brez konstruktorja kopiranja

Koda

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

V zgornjem primeru je samo en parametriziran konstruktor, ki ima dve spremenljivki. getData () se uporablja za prikaz vrednosti predmeta.

Izhod:

S konstruktorjem kopiranja

Koda

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

V zgornjem primeru je Demo razred, ki vsebuje dva konstruktorja. Konstruktor kopiranja se vedno uporablja z drugim konstruktorjem. Konstruktor kopiranja pošlje ime in starostne lastnosti enega predmeta drugemu objektu. Spodaj je izhod zgornjega programa. Ker so prve vrednosti za obstoječi objekt in konstruktor kopiranja te vrednosti in ustvari nov objekt z enakimi vrednostmi kot obstoječi objekt.

Primer 2

Koda

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

V zgornjem programu inicializiramo tri spremenljivke za pero razreda, ki definirajo lastnosti razreda. Konstruktor kopiranja lastnosti pisala kopira iz enega predmeta v drugega. Glavna () funkcija inicializira objekt z vrednostmi kot parametri parametriziranega konstruktorja. Nato se vrednosti prikažejo s pomočjo getPendetails (). Nov objekt ne vpliva na obstoječe vrednosti predmeta. Izhod je prikazan spodaj

Izhod:

Primer 3

Koda

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

Zdaj pa razumemo zgornji program.

Razred vsebuje spremenljivki a in b ter dva konstruktorja, torej parametriziran konstruktor in konstruktor kopij.

Koda

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

Konstruktor kopiranja pošlje vrednosti cal predmeta v a in b. Funkcija get () vrne vsoto a in b. Glavni () je v razredu Sum, ki inicializira c1 kot parametre in nato kopira konstruktorju vrednost predmeta c1 v objekt c2. Vsota a in b se prikaže s pomočjo getSum ().

Koda

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

Izhod:

Pravila za izdelavo kopij v C #

  • Ime konstruktorja kopij mora biti enako ime razreda.
  • Za kopiranje predmeta je potreben drug konstruktor s konstruktorjem kopij.
  • Obstaja povratna vrsta konstruktorja kopij.
  • Konstruktor kopiranja ne more biti končen, statičen in abstrakten.

Zaključek

Torej, kadarkoli želite kopirati vrednost predmeta v druge predmete, lahko uporabite konstruktor kopiranja. To je način, kako prevajalniku povemo, kako kopirati vrednosti enega predmeta v drugega. Zgodi se, ko parametre posredujemo predmetu. ICloneable vmesnik se uporablja tudi tako, da v razred dodate metodo Clone, ki naredi kopijo obstoječega predmeta. V orodju za izdelavo kopij lahko določite vedenje po meri tako, da daste edinstven ID ali kopirate nekaj potrebnih polj in ne drugih.

Priporočeni članki

To je vodnik za orodje za kopiranje v C #. Tukaj razpravljamo, kako deluje konstruktor kopij v C #, s pravili in sintakso, skupaj z ustrezno kodo vzorca. Obiščite lahko tudi naše članke, če želite izvedeti več -

  1. C # če Izjava
  2. C # do-while zanka
  3. C # funkcije
  4. Kopiraj konstruktor v C ++ s Primer
  5. Uvod v Konstruktor v C
  6. Vrste konstruktorjev v C # z izvajanjem kode