Introduzione al costruttore di copie in C #

Il costruttore, che copia le variabili di un altro oggetto e crea un nuovo oggetto, è chiamato costruttore della copia. In C #, il costruttore di copie è anche un costruttore con parametri. Un costruttore con parametri è un costruttore che contiene un parametro dello stesso tipo di classe. Il costruttore della copia è utile ogni volta che vogliamo inizializzare una nuova istanza ai valori di un'istanza esistente. Quindi, il costruttore Copia è un costruttore che sostanzialmente invia i valori di un oggetto a un altro oggetto senza influenzare i valori dell'oggetto esistente.

Come funziona il costruttore di copie in C #?

In C #, possiamo usare un costruttore di copie se vogliamo controllare una classe o ricordare i vecchi valori della classe. C # non fornisce un costruttore di copie. Tuttavia, possiamo usare un costruttore di copie insieme a un altro costruttore.

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

Il nome del costruttore è uguale al nome della sua classe. La firma del metodo del costruttore è costituita dal nome del metodo insieme al suo elenco di parametri. Ci può essere un numero qualsiasi di costruttori in una classe. Il costruttore della copia non è l'unico costruttore in una classe. Per creare un oggetto è necessario un altro costruttore con un costruttore di copie. Di seguito è riportato l'esempio che mostra come utilizzare il costruttore di copie per una classe.

Esempio 1: senza copiatrice

Codice

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

Nell'esempio sopra, c'è solo un costruttore con parametri che ha due variabili. getData () viene utilizzato per visualizzare i valori dell'oggetto.

Produzione:

Con Copia Costruttore

Codice

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

Nell'esempio sopra, Demo è una classe che contiene due costruttori. Un costruttore di copie viene sempre utilizzato con un altro costruttore. Un costruttore di copie invia il nome e le proprietà dell'età di un oggetto a un altro oggetto. Di seguito è riportato l'output del programma sopra. Poiché i primi valori sono per l'oggetto esistente e il costruttore della copia copia questi valori e crea un nuovo oggetto con gli stessi valori dell'oggetto esistente.

Esempio 2

Codice

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

Nel programma sopra, inizializziamo tre variabili per una penna di classe che definisce le proprietà della classe. Copia costruttore copia le proprietà di una penna da un oggetto a un altro. La funzione main () inizializza un oggetto con i valori come parametri per il costruttore con parametri. Quindi i valori vengono visualizzati utilizzando getPendetails (). Il nuovo oggetto non influisce sui valori degli oggetti esistenti. L'output è mostrato di seguito

Produzione:

Esempio 3

Codice

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

Ora cerchiamo di capire il programma sopra.

La classe contiene le variabili aeb e due costruttori cioè un costruttore parametrizzato e un costruttore di copie.

Codice

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

Il costruttore della copia invia i valori dell'oggetto cal in a e b. La funzione gets () restituisce la somma di aeb. Main () è nella classe Sum che inizializza c1 come parametri e quindi copia il costruttore e invia il valore dell'oggetto c1 all'oggetto c2. La somma di aeb viene visualizzata usando getSum ().

Codice

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

Produzione:

Regole per il costruttore di copie in C #

  • Il nome del costruttore della copia dovrebbe essere uguale al nome della classe.
  • Per copiare un oggetto è necessario un altro costruttore con un costruttore di copie.
  • Non esiste un tipo di restituzione del costruttore di copie.
  • Il costruttore della copia non può essere finale, statico e astratto.

Conclusione

Quindi ogni volta che vuoi copiare un valore di oggetto su altri oggetti, puoi usare un costruttore di copie. È un modo per dire al compilatore come copiare i valori di un oggetto in un altro oggetto. Succede quando passiamo i parametri a un oggetto. L'interfaccia ICloneable viene anche usata aggiungendo un metodo Clone alla tua classe che crea una copia dell'oggetto esistente. Nel costruttore di copia, è possibile specificare un comportamento personalizzato fornendo un ID univoco o copiando alcuni campi obbligatori e non altri.

Articoli consigliati

Questa è stata una guida per il costruttore di copie in C #. Qui discutiamo di come funziona il costruttore di copie in C #, con regole, sintassi e codice di esempio appropriato. Puoi anche consultare i nostri articoli per saperne di più-

  1. Dichiarazione C # if
  2. C # ciclo do-while
  3. Funzioni C #
  4. Copia Costruttore in C ++ con Esempio
  5. Introduzione al costruttore in C
  6. Tipi di costruttore in C # con implementazione del codice

Categoria: