Вступ до конструктора копіювання в C #

Конструктор, який копіює змінні іншого об'єкта і створює новий об'єкт, називається конструктором копіювання. У C # конструктор копій також є конструктором, який параметризується. Параметризований конструктор - це конструктор, який містить параметр того ж типу класу. Конструктор копій корисний, коли ми хочемо ініціалізувати новий екземпляр до значень існуючого екземпляра. Отже, конструктор Copy - це конструктор, який в основному передає значення одного об'єкта іншому об'єкту, не впливаючи на значення існуючого об'єкта.

Як працює конструктор копій у C #?

У C # ми можемо використовувати конструктор копій, якщо хочемо перевірити клас або запам'ятати старі значення класу. C # не забезпечує конструктор копій. Однак ми можемо використовувати конструктор копій разом з іншим конструктором.

Синтаксис
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();
)
)

У наведеному вище прикладі є лише один параметризований конструктор, який має дві змінні. getData () використовується для відображення значень об'єкта.

Вихід:

За допомогою конструктора копіювання

Код

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

У наведеному вище прикладі Demo - клас, який містить два конструктори. Конструктор копій завжди використовується з іншим конструктором. Конструктор копіювання надсилає ім'я та вікові властивості одного об’єкта іншому об'єкту. Нижче наведено вихідну програму. Оскільки перші значення для існуючого об'єкта і конструктор копії копіюють ці значення і створюють новий об'єкт з тими ж значеннями, що і для існуючого об'єкта.

Приклад 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();
))
)

У вищенаведеній програмі ми ініціалізуємо три змінні для пера класу, які визначають властивості класу. Конструктор копіювання копіює властивості пера від одного об’єкта до іншого. Основна () функція ініціалізує об'єкт зі значеннями як параметри параметризованого конструктора. Потім значення відображаються за допомогою getPendetails (). Новий об'єкт не впливає на існуючі значення об'єкта. Результат показаний нижче

Вихід:

Приклад 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();
)
)

Тепер давайте розберемося з вищевказаною програмою.

Клас містить змінні a і b і два конструктори, тобто параметризований конструктор і конструктор копій.

Код

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

Конструктор копіювання посилає значення об'єкта cal в a і b. Функція get () повертає суму a і b. Основний () знаходиться в класі Sum, який ініціалізує c1 як параметри, а потім копіює конструктор надсилає значення об'єкта c1 на об'єкт c2. Сума a і b відображається за допомогою getSum ().

Код

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

Вихід:

Правила для конструктора копіювання в C #

  • Ім'я конструктора копій повинно бути таким же, як ім'я класу.
  • Для копіювання об'єкта потрібен інший конструктор із конструктором копіювання.
  • Конструктор копій не повертається.
  • Конструктор копіювання не може бути остаточним, статичним та абстрактним.

Висновок

Отже, коли ви хочете скопіювати значення об'єкта на інші об'єкти, ви можете використовувати конструктор копій. Це спосіб сказати компілятору, як скопіювати значення одного об’єкта в інший об’єкт. Це відбувається, коли ми передаємо параметри об'єкту. Інтерфейс ICloneable також використовується, додаючи до свого класу метод Clone, який робить копію існуючого об'єкта. У конструкторі копій ви можете вказати власну поведінку, давши унікальний ідентифікатор або скопіювавши деякі необхідні поля, а не інші.

Рекомендовані статті

Це керівництво по роботі з програмою Copy Constructor в C #. Тут ми обговорюємо, як працює конструктор копій у C # з правилами, синтаксисом, а також відповідний зразок коду. Ви також можете переглядати наші статті, щоб дізнатися більше -

  1. C # якщо заява
  2. C # цикл виконання часу
  3. C # Функції
  4. Скопіюйте конструктор у C ++ із прикладом
  5. Вступ до конструктора на С
  6. Типи конструктора в C # з реалізацією коду