Увод у Конструктор копирања у Ц #

Конструктор, који копира варијабле другог објекта и креира нови објект, назива се конструктор копирања. У Ц #, конструктор копирања је такође параметризован конструктор. Параметризирани конструктор је конструктор који садржи параметар истог типа класе. Конструктор копирања је користан кад год желимо да иницијализирамо нову инстанцу у вредности постојеће инстанције. Дакле, конструктор копирања је конструктор који у основи шаље вредности једног објекта другом објекту без утицаја на вредности постојећег објекта.

Како програм за копирање копира у Ц #?

У Ц #, можемо користити конструктор копирања ако желимо да извршимо ревизију класе или да се сетимо старих вредности класе. Ц # не пружа конструктор копија. Међутим, можемо користити конструктор копирања заједно са другим конструктором.

Синтакса
class Name (
// Parameterized Constructor
public Name(parameters)
(
// code
)
public Name(Name instance of class) //copyconstructor
(
//code
)
)

Назив конструктора исти је као и назив његове класе. Метода Потпис конструктора састоји се од назива методе заједно са његовом листом параметара. У класи може бити било који број конструктора. Конструктор копирања није једини конструктор у класи. За креирање објекта потребан је други конструктор с конструктором копирања. Следи пример који показује како се користи конструктор копирања за класу.

Пример 1: Без конструктора копирања

Код

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

У горњем примјеру постоји само један параметризирани конструктор који има двије варијабле. гетДата () се користи за приказ вредности објекта.

Излаз:

Витх Цонструцтор Цопи

Код

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

У горњем примеру, Демо је класа која садржи два конструктора. Конструктор копирања увек се користи са другим конструктором. Конструктор копирања шаље име и старосна својства једног објекта другом објекту. Испод је резултат горе наведеног програма. Пошто су прве вредности за постојећи објект, а конструктор копирања ове вредности креира и ствара нови објект с истим вредностима као и постојећи објект.

Пример 2

Код

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

У горњем програму иницијализирамо три променљиве за класарску оловку која дефинише својства класе. Конструктор копирања својства оловке копира са једног објекта на други. Главна () функција иницијализира објект са вриједностима као параметрима за параметризирани конструктор. Тада се вриједности приказују помоћу гетПендетаилс (). Нови објект не утиче на постојеће вриједности објекта. Излаз је приказан испод

Излаз:

Пример 3

Код

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

Сада ћемо разумјети горњи програм.

Класа садржи варијабле а и б и два конструктора, тј. Параметризовани конструктор и конструктор копирања.

Код

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

Конструктор копирања шаље вредности цал објекта у а и б. Функција гет () враћа зброј а и б. Главни () је у класи Сум која иницијализира ц1 као параметре, а затим копира конструктор шаље вриједност објекта ц1 у објект ц2. Збир а и б приказује се помоћу гетСум ().

Код

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

Излаз:

Правила за конструкцију копија у Ц #

  • Назив конструктора копирања треба бити исти као и име класе.
  • За копирање објекта потребан је други конструктор с конструктором копирања.
  • Не постоји повратни тип конструктора копирања.
  • Конструктор копирања не може бити коначан, статичан и апстрактан.

Закључак

Тако да кад год желите да копирате вредност објекта у друге објекте, можете користити конструктор копирања. То је начин да се компајлеру каже како копирати вредности једног објекта у други објект. Дешава се када параметре проследимо објекту. ИЦлонеабле интерфејс се такође користи додавањем методе Цлоне у вашу класу која прави копију постојећег објекта. У конструктору копија можете одредити прилагођено понашање давањем јединственог ИД-а или копирањем неких потребних поља, а не других.

Препоручени чланци

Ово је водич за Конструктор копирања у Ц #. Овде смо расправљали о томе како конструктор копирања делује у Ц #, са правилима, синтаксом, заједно са одговарајућим узорком кода. Можете и да прођете кроз наше дате чланке да бисте сазнали више -

  1. Ц # иф Изјава
  2. Ц # до-вхиле петља
  3. Ц # функције
  4. Копирајте конструктор у Ц ++ са примером
  5. Увод у конструктор на Ц-у
  6. Врсте конструктора у Ц # са имплементацијом кода

Категорија: