Въведение в конструктора за копиране в 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();
))
)

В горната програма инициализираме три променливи за писалка клас, която определя свойствата на класа. Конструкторът за копиране копира свойствата на писалка от един обект в друг. Функцията main () инициализира обект със стойности като параметри за параметризирания конструктор. Тогава стойностите се показват с помощта на 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 метод към вашия клас, който прави копие на съществуващия обект. В конструктора на копия можете да посочите персонализирано поведение, като дадете уникален идентификационен номер или като копирате някои задължителни полета, а не други.

Препоръчителни статии

Това е ръководство за копиране на конструктора в C #. Тук обсъждаме как работи конструкторът за копиране в C #, с правила, синтаксис, заедно с подходящ примерен код. Можете също да прегледате нашите статии, за да научите повече-

  1. C # ако изявление
  2. C # do-while цикъл
  3. C # функции
  4. Копирайте конструктора в C ++ с пример
  5. Въведение в Конструктор в С
  6. Видове конструктор в C # с изпълнение на код