Úvod do programu Constructor v jazyce C #

Konstruktor, který kopíruje proměnné jiného objektu a vytváří nový objekt, se nazývá konstruktor kopie. V C # je konstruktor kopie také parametrizovaný konstruktor. Parametrizovaný konstruktor je konstruktor, který obsahuje parametr stejného typu třídy. Konstruktor kopie je užitečný vždy, když chceme inicializovat novou instanci na hodnoty existující instance. Konstruktor Kopírovat je tedy konstruktor, který v zásadě odesílá hodnoty jednoho objektu jinému objektu bez ovlivnění hodnot existujícího objektu.

Jak Copy Constructor pracuje v C #?

V C # můžeme použít konstruktor kopií, pokud chceme auditovat třídu nebo si pamatovat staré hodnoty třídy. C # neposkytuje konstruktor kopií. Můžeme však použít konstruktor kopií spolu s jiným konstruktorem.

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

Název konstruktoru je stejný jako název třídy. Metoda Podpis konstruktoru se skládá z názvu metody a jejího seznamu parametrů. Ve třídě může být libovolný počet konstruktérů. Konstruktor kopie není jediný konstruktor ve třídě. K vytvoření objektu je vyžadován další konstruktor s konstruktorem kopie. Následuje příklad, který ukazuje, jak použít kopírovací konstruktor pro třídu.

Příklad 1: Bez kopírovacího konstruktoru

Kód

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

Ve výše uvedeném příkladu je pouze jeden parametrizovaný konstruktor, který má dvě proměnné. getData () se používá k zobrazení hodnot objektu.

Výstup:

S Copy Constructor

Kód

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

Ve výše uvedeném příkladu je Demo třída, která obsahuje dva konstruktory. Kopírovací konstruktor se vždy používá s jiným konstruktorem. Konstruktor kopie odešle jméno a věk vlastnosti jednoho objektu do jiného objektu. Níže je uveden výstup výše uvedeného programu. Protože první hodnoty jsou pro existující objekt a kopírují konstruktor, zkopírují tyto hodnoty a vytvoří nový objekt se stejnými hodnotami jako existující objekt.

Příklad 2

Kód

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

Ve výše uvedeném programu inicializujeme tři proměnné pro pero třídy, které definuje vlastnosti třídy. Kopírovat konstruktor kopíruje vlastnosti pera z jednoho objektu do druhého. Funkce main () inicializuje objekt s hodnotami jako parametry pro parametrizovaný konstruktor. Poté jsou hodnoty zobrazeny pomocí getPendetails (). Nový objekt neovlivní existující hodnoty objektu. Výstup je uveden níže

Výstup:

Příklad 3

Kód

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

Nyní pochopíme výše uvedený program.

Třída obsahuje proměnné aab a dva konstruktory, tj. Parametrizovaný konstruktér a konstruktér kopie.

Kód

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 kopie posílá hodnoty cal objektu do aab. Funkce get () vrací součet aab. Main () je ve třídě Sum, která inicializuje c1 jako parametry a poté zkopíruje konstruktoru hodnotu objektu c1 do objektu c2. Součet aab je zobrazen pomocí getSum ().

Kód

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

Výstup:

Pravidla pro kopírovací konstruktor v C #

  • Název konstruktoru kopie by měl být stejný jako název třídy.
  • Pro kopírování objektu je vyžadován další konstruktor s konstruktorem kopie.
  • Neexistuje návratový typ konstruktoru kopií.
  • Konstruktor kopií nemůže být konečný, statický a abstraktní.

Závěr

Takže kdykoli chcete zkopírovat hodnotu objektu do jiných objektů, můžete použít konstruktor kopie. Je to způsob, jak říct kompilátoru, jak zkopírovat hodnoty jednoho objektu do jiného objektu. Stává se to, když předáme parametry objektu. ICloneable rozhraní se také používá přidáním metody Clone do vaší třídy, která vytvoří kopii existujícího objektu. V konstruktoru kopírování můžete určit vlastní chování zadáním jedinečného ID nebo zkopírováním některých povinných polí, nikoli jiných.

Doporučené články

Toto byl průvodce Copy Constructor v C #. Zde diskutujeme o tom, jak konstruktér kopírování pracuje v C #, s pravidly, syntaxí a příslušným ukázkovým kódem. Další informace naleznete také v našich článcích.

  1. C # if Prohlášení
  2. C # do-while loop
  3. C # Funkce
  4. Kopírovat konstruktor v C ++ s příkladem
  5. Úvod do konstruktoru v C
  6. Typy konstruktoru v jazyce C # s implementací kódu

Kategorie: