Bevezetés a C # kivitelezőbe
A kivitelezőt, amely egy másik objektum változóit másolja és új objektumot hoz létre, másolási kivitelezőnek nevezzük. A C #-ban a másolási konstruktor egy paraméteres konstruktor is. A paraméterezett konstruktor olyan konstruktor, amely ugyanazon osztálytípus paraméterét tartalmazza. A másolási konstruktor akkor hasznos, ha új példányt akarunk inicializálni egy meglévő példány értékeire. Tehát a Copy konstruktor olyan konstruktor, amely alapvetõen egy objektum értékeit továbbítja egy másik objektumra anélkül, hogy befolyásolja a létezõ objektum értékeit.
Hogyan működik a Copy Constructor a C # -ben?
A C # -ben használhatunk egy másolati konstruktort, ha auditálni akarunk egy osztályt, vagy hogy emlékezzünk az osztály régi értékeire. A C # nem biztosít másolatkészítőt. Ugyanakkor használhatunk másoló konstruktort egy másik konstruktorral együtt.
Szintaxisclass Name (
// Parameterized Constructor
public Name(parameters)
(
// code
)
public Name(Name instance of class) //copyconstructor
(
//code
)
)
A kivitelező neve megegyezik az osztály nevével. Módszer A konstruktor aláírása a módszer nevét és annak paraméterlistáját tartalmazza. Az osztályban tetszőleges számú konstruktor lehet. A másolat kivitelező nem az egyetlen kivitelező az osztályban. Egy másik konstruktorra szükség van egy másolatkészítővel az objektum létrehozásához. Az alábbiakban bemutatjuk a példát, amely bemutatja, hogyan lehet a másolatkészítőt használni egy osztályhoz.
1. példa: Másolókészítő nélkül
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();
)
)
A fenti példában csak egy paraméteres konstruktor van, amely két változóval rendelkezik. A getData () az objektum értékeinek megjelenítésére szolgál.
Kimenet:
Copy Constructor segítségével
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();
)
)
A fenti példában a Demo egy osztály, amely két konstruktort tartalmaz. A másolat-kivitelezőt mindig egy másik kivitelezővel használják. A másolatkészítő elküldi az egyik objektum nevét és életkorának tulajdonságait egy másik objektumnak. Az alábbiakban a fenti program kimenete látható. Mivel az első értékek a létező objektumra vonatkoznak, és a másoló konstruktor másolja ezeket az értékeket, és hozzon létre egy új objektumot, ugyanolyan értékekkel, mint a létező objektum.
2. példa
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();
))
)
A fenti programban három változót inicializálunk egy osztálytoll számára, amely meghatározza az osztály tulajdonságait. A kivitelező másolja a toll tulajdonságait az egyik tárgyról a másikra. A main () függvény inicializálja az objektumot az értékekkel, mint a paraméterezett konstruktor paraméterei. Ezután az értékek megjelennek a getPendetails () segítségével. Az új objektum nem érinti a meglévő objektum értékeket. A kimenet az alább látható
Kimenet:
3. példa
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();
)
)
Most értjük meg a fenti programot.
Az osztály tartalmazza az a és b változókat és két konstruktort, azaz egy paraméteres konstruktort és egy másolati konstruktort.
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;
)
)
A másoló konstruktor elküldi a cal objektum értékeit az a és b értékre. A get () függvény az a és b összegét adja vissza. A main () az Sum osztályban található, amely inicializálja a c1-et paraméterként, majd másolja a konstruktort, és elküldi a c1 objektum értékét a c2 objektumnak. Az a és b összege a getSum () használatával jelenik meg.
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();
)
)
Kimenet:
A C # kivitelezőre vonatkozó szabályok
- A másolatkészítő nevének meg kell egyeznie az osztály nevével.
- Egy másik konstruktorra szükség van egy másolatkészítővel az objektum másolásához.
- Nincs visszatérő típusú másolatkészítő.
- A kivitelező nem lehet végleges, statikus és elvont.
Következtetés
Tehát, amikor egy objektum értéket másolni kíván más objektumra, használhat másoló konstruktort. Ez egy módja annak, hogy megmondja a fordítónak, hogyan másolhatja az egyik objektum értékeit egy másik objektumba. Ez akkor fordul elő, amikor átadjuk a paramétereket egy objektumnak. Az ICloneable interfészt arra is használják, hogy egy klónozási módszert adnak az osztályhoz, amely másolatot készít a meglévő objektumról. A másolókészítőben megadhatja az egyéni viselkedést egyedi azonosító megadásával vagy néhány szükséges mező másolásával, a többi nem.
Ajánlott cikkek
Ez egy útmutató a Copy Constructor számára a C # -ben. Itt tárgyaljuk, hogyan működik a másoló konstruktor a C # -ben, a szabályokkal, a szintaxissal és a megfelelő minta kóddal. Megnézheti az adott cikkeket is, hogy többet megtudjon-
- C # ha nyilatkozat
- C # do-while hurok
- C # Funkciók
- Másolja a konstruktorot a C ++ alkalmazásba a példával
- Bevezetés a konstruktorba C
- A konstruktor típusai a C # kód bevezetésével