Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Salin Pembina dalam C#

Salin Pembina dalam C#

WBOY
WBOYasal
2024-09-03 15:12:44638semak imbas

Pembina, yang menyalin pembolehubah objek lain dan mencipta objek baharu, dipanggil pembina salinan. Dalam C#, pembina salinan juga merupakan pembina berparameter. Pembina berparameter ialah pembina yang mengandungi parameter jenis kelas yang sama. Pembina salinan berguna apabila kita ingin memulakan contoh baharu kepada nilai contoh sedia ada. Jadi, pembina Salin ialah pembina yang pada asasnya menghantar nilai satu objek ke objek lain tanpa menjejaskan nilai objek sedia ada.

Bagaimanakah Copy Constructor berfungsi dalam C#?

Dalam C#, kita boleh menggunakan pembina salinan jika kita ingin mengaudit kelas atau mengingati nilai lama kelas itu. C# tidak menyediakan pembina salinan. Walau bagaimanapun, kita boleh menggunakan pembina salinan bersama-sama dengan pembina lain.

Sintaks

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

Nama pembina adalah sama dengan nama kelasnya. Kaedah Tandatangan pembina terdiri daripada nama kaedah bersama senarai parameternya. Terdapat beberapa bilangan pembina dalam kelas. Pembina salinan bukan satu-satunya pembina dalam kelas. Pembina lain diperlukan dengan pembina salinan untuk mencipta objek. Berikut ialah contoh yang menunjukkan cara menggunakan pembina salinan untuk kelas.

Contoh 1: Tanpa Pembina Salin

Kod

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

Dalam contoh di atas, hanya terdapat satu pembina parameter, yang mempunyai dua pembolehubah. getData() digunakan untuk memaparkan nilai objek.

Output:

 Salin Pembina dalam C#

Dengan Copy Constructor

Kod

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

Dalam contoh di atas, Demo ialah kelas yang mengandungi dua pembina. Pembina salinan sentiasa digunakan dengan pembina lain. Pembina salinan menghantar nama dan sifat umur satu objek ke objek lain. Di bawah ialah output program di atas kerana nilai pertama adalah untuk objek sedia ada, dan salin pembina menyalin nilai ini dan cipta objek baharu dengan nilai yang sama seperti objek sedia ada.

Contoh 2

Kod

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

Dalam atur cara di atas, kami memulakan tiga pembolehubah untuk pen kelas yang mentakrifkan sifat kelas. Pembina salin menyalin sifat pen dari satu objek ke objek lain. Fungsi main() memulakan objek dengan nilai sebagai parameter untuk pembina parameter. Kemudian nilai dipaparkan menggunakan getPendetails(). Objek baharu tidak menjejaskan nilai objek sedia ada. Output ditunjukkan di bawah.

Output:

Salin Pembina dalam C#

Contoh 3

Kod

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

Sekarang mari kita fahami program di atas.

Kelas mengandungi pembolehubah a dan b dan dua pembina, iaitu pembina berparameter dan pembina salinan.

Kod

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

Pembina salinan menghantar nilai objek cal ke dalam a dan b.  Fungsi gets() mengembalikan jumlah a dan b. Main() berada dalam kelas Sum, yang memulakan c1 sebagai parameter dan kemudian menyalin pembina dihantar nilai objek c1 ke objek c2. Jumlah a dan b dipaparkan menggunakan getSum().

Kod

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

Output:

Salin Pembina dalam C#

 Peraturan untuk Copy Constructor dalam C#

  • Nama pembina salinan hendaklah sama dengan nama kelas.
  • Pembina lain diperlukan dengan pembina salinan untuk menyalin objek.
  • Tiada jenis pemulangan pembina salinan.
  • Pembina salinan tidak boleh muktamad, statik dan abstrak.

Kesimpulan

Jadi apabila anda ingin menyalin nilai objek ke objek lain, anda boleh menggunakan pembina salinan. Ini adalah cara untuk memberitahu pengkompil cara menyalin nilai satu objek dalam objek lain. Ia berlaku apabila kita menghantar parameter kepada objek. Antara muka ICloneable juga digunakan dengan menambahkan kaedah Klon ke kelas anda, membuat salinan objek sedia ada. Dalam pembina salinan, anda boleh menentukan gelagat tersuai dengan memberikan ID unik atau dengan menyalin beberapa medan yang diperlukan dan bukan yang lain.

Atas ialah kandungan terperinci Salin Pembina dalam C#. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Pembina dalam C#Artikel seterusnya:Pembina dalam C#