Introduktion till Copy Constructor i C #

Konstruktören, som kopierar variabler för ett annat objekt och skapar ett nytt objekt kallas en kopieringskonstruktör. I C # är kopieringskonstruktören också en parametrerad konstruktör. En parametrerad konstruktör är en konstruktör som innehåller en parameter av samma klasstyp. Kopieringskonstruktören är användbar när vi vill initialisera en ny instans till värdena på en befintlig instans. Så, Copy-konstruktören är en konstruktör som i princip skickar värdena på ett objekt till ett annat objekt utan att påverka värdena på befintligt objekt.

Hur fungerar Copy Constructor i C #?

I C # kan vi använda en kopieringskonstruktör om vi vill granska en klass eller för att komma ihåg klassens gamla värden. C # tillhandahåller inte en kopieringskonstruktör. Vi kan dock använda en kopia-konstruktör tillsammans med en annan konstruktör.

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

Konstruktörens namn är samma som klassnamnet. Metod Signatur för konstruktören består av metodens namn tillsammans med dess parameterlista. Det kan finnas valfritt antal konstruktörer i en klass. Kopieringskonstruktören är inte den enda konstruktören i en klass. En annan konstruktör krävs med en kopieringskonstruktör för att skapa ett objekt. Följande är exempel som visar hur man använder kopieringskonstruktör för en klass.

Exempel 1: Utan Copy Constructor

Koda

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

I exemplet ovan finns det bara en parametrerad konstruktör som har två variabler. getData () används för att visa värdena på objektet.

Produktion:

Med Copy Constructor

Koda

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

I exemplet ovan är Demo en klass som innehåller två konstruktörer. En kopieringskonstruktör används alltid med en annan konstruktör. En kopieringskonstruktör skickar namn och åldersegenskaper för ett objekt till ett annat objekt. Nedan visas utgången från ovanstående program. Eftersom de första värdena är för det befintliga objektet och kopieringskonstruktör kopierar dessa värden och skapar ett nytt objekt med samma värden som för befintligt objekt.

Exempel 2

Koda

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

I ovanstående program initialiserar vi tre variabler för en klasspenna som definierar klassens egenskaper. Kopiera konstruktör kopierar egenskaperna för en penna från ett objekt till ett annat. Huvudfunktionen () initierar ett objekt med värdena som parametrar för den parametrerade konstruktorn. Därefter visas värdena med getPendetails (). Det nya objektet påverkar inte de befintliga objektvärdena. Utgången visas nedan

Produktion:

Exempel 3

Koda

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

Låt oss nu förstå ovanstående program.

Klassen innehåller variablerna a och b och två konstruktörer, dvs en parametrerad konstruktör och en kopieringskonstruktör.

Koda

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

Kopieringskonstruktören skickar värdena på kalobjektet till a och b. Funktionen får () returnerar summan av a och b. Huvuddelen () är i klassen Sum som initialiserar c1 som parametrar och sedan kopierar konstruktören skickas värdet på objektet c1 till objektet c2. Summan av a och b visas med getSum ().

Koda

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

Produktion:

Regler för Copy Constructor i C #

  • Namnet på kopieringskonstruktören ska vara samma som klassnamnet.
  • En annan konstruktör krävs med en kopieringskonstruktör för att kopiera ett objekt.
  • Det finns ingen typ av kopieringskonstruktör.
  • Kopieringskonstruktör kan inte vara slutlig, statisk och abstrakt.

Slutsats

Så när du vill kopiera ett objektvärde till andra objekt kan du använda en kopieringskonstruktör. Det är ett sätt att berätta kompilatorn hur man kopierar värdena på ett objekt i ett annat objekt. Det händer när vi skickar parametrar till ett objekt. ICloneable gränssnitt används också genom att lägga till en klonmetod till din klass som gör en kopia av det befintliga objektet. I kopieringskonstruktör kan du ange anpassat beteende genom att ge ett unikt ID eller genom att kopiera vissa obligatoriska fält och inte andra.

Rekommenderade artiklar

Detta har varit en guide till Copy Constructor i C #. Här diskuterar vi hur fungerar kopieringskonstruktör i C #, med regler, syntax, tillsammans med lämplig provkod. Du kan också gå igenom våra givna artiklar för att lära dig mer-

  1. C # om uttalande
  2. C # do-while-loop
  3. C # funktioner
  4. Kopiera konstruktör i C ++ med exempel
  5. Introduktion till konstruktör i C
  6. Typer av konstruktörer i C # med kodimplementering

Kategori: