Johdatus C # -kopiokonstruktoriin

Rakentajaa, joka kopioi toisen objektin muuttujat ja luo uuden objektin, kutsutaan kopiorakentajaksi. Kohdassa C # kopiointirakentaja on myös parametrisoitu rakentaja. Parametrisoitu konstruktori on rakentaja, joka sisältää saman luokkatyypin parametrin. Kopiointirakentaja on hyödyllinen aina, kun haluamme alustaa uuden ilmentymän olemassa olevan ilmentymän arvoille. Joten, Kopiointi-rakentaja on rakentaja, joka lähettää periaatteessa yhden objektin arvot toiselle objektille vaikuttamatta olemassa olevan objektin arvoihin.

Kuinka Copy Constructor toimii C #: ssä?

C #: ssä voimme käyttää kopiorakentajaa, jos haluamme tarkistaa luokan tai muistaa luokan vanhat arvot. C # ei tarjoa kopiorakentajaa. Voimme kuitenkin käyttää kopiorakentajaa yhdessä toisen rakentajan kanssa.

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

Rakentajan nimi on sama kuin sen luokan nimi. Menetelmä Allekirjoittaja koostuu menetelmän nimestä ja sen parametriluettelosta. Luokassa voi olla mikä tahansa määrä rakentajia. Kopiointirakentaja ei ole luokan ainoa rakentaja. Objektin luomiseen tarvitaan toinen rakentaja kopiokonstruktorin kanssa. Seuraava on esimerkki, joka osoittaa, kuinka kopiointirakentajaa käytetään luokassa.

Esimerkki 1: Ilman kopiokonstruktoria

Koodi

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

Yllä olevassa esimerkissä on vain yksi parametrisoitu rakentaja, jolla on kaksi muuttujaa. getData (): ta käytetään objektin arvojen näyttämiseen.

lähtö:

Copy Constructorilla

Koodi

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

Yllä olevassa esimerkissä Demo on luokka, joka sisältää kaksi rakentajaa. Kopiorakentajaa käytetään aina toisen rakentajan kanssa. Kopiorakentaja lähettää objektin nimen ja ikäominaisuuden toiselle objektille. Alla on yllä olevan ohjelman tulos. Koska ensimmäiset arvot ovat olemassa olevalle objektille ja kopiorakentaja kopioi nämä arvot ja luo uusi objekti samoilla arvoilla kuin olemassa olevassa objektissa.

Esimerkki 2

Koodi

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

Yllä olevassa ohjelmassa alustamme kolme muuttujaa luokan kynälle, joka määrittelee luokan ominaisuudet. Kopiorakentaja kopioi kynän ominaisuudet objektista toiseen. Pää () -toiminto alustaa objektin arvoilla parametrisoidun konstruktorin parametreina. Sitten arvot näytetään käyttämällä getPendetails (). Uusi objekti ei vaikuta olemassa oleviin objektiarvoihin. Lähtö näkyy alla

lähtö:

Esimerkki 3

Koodi

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

Ymmärrämme nyt yllä oleva ohjelma.

Luokka sisältää muuttujat a ja b ja kaksi rakentajaa eli parametrisoidun rakentajan ja kopiorakentajan.

Koodi

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

Kopiointirakentaja lähettää cal-objektin arvot arvoihin a ja b. Toiminto saa () palauttaa summan a ja b. Tärkein () on luokassa Sum, joka alustaa c1: n parametreina ja kopioi sitten rakentajalle lähetetään objektin c1 arvo objektiin c2. A ja b summa näytetään käyttämällä getSum () -sovellusta.

Koodi

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

lähtö:

Säännöt kopiointityökalulle C #

  • Kopiointirakentajan nimen tulisi olla sama kuin luokan nimen.
  • Objektin kopiointiin tarvitaan toinen rakentaja.
  • Kopiointityökalua ei ole palautetyyppiä.
  • Kopiointirakentaja ei voi olla lopullinen, staattinen ja abstrakti.

johtopäätös

Joten kun haluat kopioida objektiarvon muihin objekteihin, voit käyttää kopiorakentajaa. Se on tapa kertoa kääntäjälle, kuinka kopioida yhden objektin arvot toiseen objektiin. Se tapahtuu, kun välitämme parametrit objektille. ICloneable-käyttöliittymää käytetään myös lisäämällä kloonimenetelmä luokkaan, joka tekee kopion olemassa olevasta objektista. Kopiointirakentajassa voit määrittää mukautetun toiminnan antamalla yksilöllisen tunnuksen tai kopioimalla joitain vaadittavia kenttiä, ei muita.

Suositellut artikkelit

Tämä on opas C #: n kopiointirakentajalle. Tässä keskustellaan siitä, kuinka kopiointirakentaja toimii C #: ssä, säännöillä, syntaksilla ja sopivalla näytekoodilla. Voit myös käydä annettujen artikkeleidemme läpi oppiaksesi lisää-

  1. C # jos lausunto
  2. C # väliaikainen silmukka
  3. C # toiminnot
  4. Kopioi rakentaja C ++ -sovellukseen esimerkillä
  5. Johdatus rakentajaan C: ssä
  6. C #: n konstruktorityypit koodin toteutuksella