Uvod u Konstruktor kopiranja u C #

Konstruktor, koji kopira varijable drugog objekta i stvara novi objekt, naziva se konstruktor kopiranja. U C #, konstruktor kopiranja je također parametriziran konstruktor. Parametrizirani konstruktor je konstruktor koji sadrži parametar istog tipa klase. Konstruktor kopiranja koristan je kad god želimo inicijalizirati novu instancu u vrijednosti postojeće instancije. Dakle, konstruktor Kopiranje je konstruktor koji u osnovi šalje vrijednosti jednog objekta drugom objektu bez utjecaja na vrijednosti postojećeg objekta.

Kako program za kopiranje funkcionira u C #?

U C # možemo koristiti konstruktor kopiranja ako želimo izvršiti reviziju klase ili se prisjetiti starih vrijednosti klase. C # ne pruža konstruktor kopiranja. Međutim, možemo koristiti konstruktor kopiranja zajedno s drugim konstruktorom.

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

Naziv konstruktora isti je kao i naziv njegove klase. Metoda Potpis konstruktora sastoji se od naziva metode zajedno s popisom parametara. U razredu može biti bilo koji broj konstruktora. Konstruktor kopiranja nije jedini konstruktor u klasi. Za kreiranje objekta potreban je drugi konstruktor s konstruktorom kopiranja. Slijedi primjer koji pokazuje kako koristiti konstruktor kopiranja za klasu.

Primjer 1: Bez konstruktora kopiranja

Kodirati

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

U gornjem primjeru postoji samo jedan parametrizirani konstruktor koji ima dvije varijable. getData () koristi se za prikaz vrijednosti objekta.

Izlaz:

S konstruktorom kopiranja

Kodirati

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

U gornjem primjeru Demo je klasa koja sadrži dva konstruktora. Konstruktor kopiranja uvijek se koristi s drugim konstruktorom. Konstruktor kopiranja šalje ime i dobna svojstva jednog objekta drugom objektu. Ispod je rezultat gore navedenog programa. Kako su prve vrijednosti za postojeći objekt, a konstruktor kopiranja ove vrijednosti, i kreiraju novi objekt s istim vrijednostima kao i postojeći objekt.

Primjer 2

Kodirati

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

U gornjem programu inicijaliziramo tri varijable za klasu olovke koja definira svojstva klase. Konstruktor kopiranja svojstva olovke kopira s jednog objekta na drugi. Glavna () funkcija inicijalizira objekt sa vrijednostima kao parametrima za parametrizirani konstruktor. Tada se vrijednosti prikazuju pomoću getPendetails (). Novi objekt ne utječe na postojeće vrijednosti objekta. Izlaz je prikazan dolje

Izlaz:

Primjer 3

Kodirati

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

Sada ćemo razumjeti gornji program.

Klasa sadrži varijable a i b i dva konstruktora, tj. Parametrizirani konstruktor i konstruktor kopiranja.

Kodirati

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 šalje vrijednosti cal objekta u a i b. Funkcija get () vraća zbroj a i b. Glavni () se nalazi u klasi Sum koja inicijalizira c1 kao parametre, a zatim kopira konstruktor šalje vrijednost objekta c1 u objekt c2. Zbroj a i b prikazuje se pomoću getSum ().

Kodirati

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

Izlaz:

Pravila za izradu kopija u C #

  • Naziv konstruktora kopiranja trebao bi biti isti kao i naziv klase.
  • Za kopiranje objekta potreban je drugi konstruktor s konstruktorom kopiranja.
  • Ne postoji povratni tip konstruktora kopiranja.
  • Konstruktor kopiranja ne može biti konačan, statičan i apstraktiran.

Zaključak

Tako da kad god želite kopirati vrijednost objekta u druge objekte, možete koristiti konstruktor kopiranja. To je način da se kompajleru kaže kako kopirati vrijednosti jednog objekta u drugi objekt. To se događa kada parametre proslijedimo objektu. ICloneable sučelje se također koristi dodavanjem metode Clone vašoj klasi koja čini kopiju postojećeg objekta. U konstruktoru kopija možete odrediti prilagođeno ponašanje davanjem jedinstvenog ID-a ili kopiranjem nekih potrebnih polja, a ne drugih.

Preporučeni članci

Ovo je vodič za Konstruktor kopiranja u C #. Ovdje smo raspravljali o tome kako konstruktor kopiranja djeluje u C #, s pravilima, sintaksom, zajedno s odgovarajućim uzorkom koda. Možete i proći kroz naše članke da biste saznali više -

  1. C # ako Izjava
  2. C # do-while petlja
  3. C # funkcije
  4. Kopirajte konstruktor u C ++ sa primjerom
  5. Uvod u konstruktor u C
  6. Vrste konstruktora u C # s implementacijom koda

Kategorija: