Salin Pembina dalam C#
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:
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:
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:
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!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas











Panduan untuk Active Directory dengan C#. Di sini kita membincangkan pengenalan dan cara Active Directory berfungsi dalam C# bersama-sama dengan sintaks dan contoh.

Panduan untuk Penjana Nombor Rawak dalam C#. Di sini kita membincangkan cara Penjana Nombor Rawak berfungsi, konsep nombor pseudo-rawak dan selamat.

Panduan untuk Paparan Grid Data C#. Di sini kita membincangkan contoh cara paparan grid data boleh dimuatkan dan dieksport daripada pangkalan data SQL atau fail excel.

Panduan untuk Faktorial dalam C#. Di sini kita membincangkan pengenalan kepada faktorial dalam c# bersama-sama dengan contoh dan pelaksanaan kod yang berbeza.

Perbezaan antara multithreading dan asynchronous adalah bahawa multithreading melaksanakan pelbagai benang pada masa yang sama, sementara secara tidak sengaja melakukan operasi tanpa menyekat benang semasa. Multithreading digunakan untuk tugas-tugas yang berintensifkan, sementara asynchronously digunakan untuk interaksi pengguna. Kelebihan multi-threading adalah untuk meningkatkan prestasi pengkomputeran, sementara kelebihan asynchronous adalah untuk tidak menghalang benang UI. Memilih multithreading atau asynchronous bergantung kepada sifat tugas: tugas-tugas intensif pengiraan menggunakan multithreading, tugas yang berinteraksi dengan sumber luaran dan perlu menyimpan respons UI menggunakan asynchronous.

Panduan kepada Corak dalam C#. Di sini kita membincangkan pengenalan dan 3 jenis Corak teratas dalam C# bersama-sama dengan contoh dan pelaksanaan kodnya.

Panduan Nombor Perdana dalam C#. Di sini kita membincangkan pengenalan dan contoh nombor perdana dalam c# bersama dengan pelaksanaan kod.

Terdapat beberapa cara untuk mengubah format XML: mengedit secara manual dengan editor teks seperti Notepad; Memformat secara automatik dengan alat pemformatan XML dalam talian atau desktop seperti XMLBeAutifier; Tentukan peraturan penukaran menggunakan alat penukaran XML seperti XSLT; atau menghuraikan dan beroperasi menggunakan bahasa pengaturcaraan seperti Python. Berhati -hati apabila mengubahsuai dan membuat sandaran fail asal.
