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.
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.
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:
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.
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:
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:
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!