Введение в конструктор копирования в C #

Конструктор, который копирует переменные другого объекта и создает новый объект, называется конструктором копирования. В C # конструктор копирования также является параметризованным конструктором. Параметризованный конструктор - это конструктор, который содержит параметр того же типа класса. Конструктор копирования полезен всякий раз, когда мы хотим инициализировать новый экземпляр значениями существующего экземпляра. Таким образом, конструктор Copy является конструктором, который в основном отправляет значения одного объекта другому объекту, не затрагивая значения существующего объекта.

Как работает Copy Constructor в C #?

В C # мы можем использовать конструктор копирования, если мы хотим провести аудит класса или запомнить старые значения класса. C # не предоставляет конструктор копирования. Однако мы можем использовать конструктор копирования вместе с другим конструктором.

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

Имя конструктора совпадает с именем его класса. Метод Signature конструктора состоит из имени метода вместе со списком его параметров. В классе может быть любое количество конструкторов. Конструктор копирования не является единственным конструктором в классе. Другой конструктор требуется с конструктором копирования для создания объекта. Ниже приведен пример, который показывает, как использовать конструктор копирования для класса.

Пример 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 является классом, который содержит два конструктора. Конструктор копирования всегда используется с другим конструктором. Конструктор копирования отправляет свойства name и age одного объекта другому объекту. Ниже приведен вывод вышеуказанной программы. Поскольку первые значения для существующего объекта и конструктора копирования, скопируйте эти значения и создайте новый объект с теми же значениями, что и для существующего объекта.

Пример 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();
))
)

В приведенной выше программе мы инициализируем три переменные для класса pen, которые определяют свойства класса. Конструктор копирования копирует свойства пера из одного объекта в другой. Функция 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. Функция gets () возвращает сумму a и b. Функция main () находится в классе 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. Введение в конструктор в C
  6. Типы конструктора в C # с реализацией кода