Jadual Kandungan
Bagaimanakah Copy Constructor berfungsi dalam C#?
Contoh 1: Tanpa Pembina Salin
Dengan Copy Constructor
Contoh 3
Kesimpulan

Salin Pembina dalam C#

Sep 03, 2024 pm 03:12 PM
c# c# tutorial

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
}
}
Salin selepas log masuk

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();
}
}
Salin selepas log masuk

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();
}
}
Salin selepas log masuk

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();
}}
}
Salin selepas log masuk

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();
}
}
Salin selepas log masuk

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;
}
}
Salin selepas log masuk

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();
}
}
Salin selepas log masuk

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 Laman Web ini
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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

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

Artikel Panas

<🎜>: Bubble Gum Simulator Infinity - Cara Mendapatkan dan Menggunakan Kekunci Diraja
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Sistem Fusion, dijelaskan
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1666
14
Tutorial PHP
1273
29
Tutorial C#
1254
24
Direktori Aktif dengan C# Direktori Aktif dengan C# Sep 03, 2024 pm 03:33 PM

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

Penjana Nombor Rawak dalam C# Penjana Nombor Rawak dalam C# Sep 03, 2024 pm 03:34 PM

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

Paparan Grid Data C# Paparan Grid Data C# Sep 03, 2024 pm 03:32 PM

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.

Faktorial dalam C# Faktorial dalam C# Sep 03, 2024 pm 03:34 PM

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 C# Perbezaan antara multithreading dan asynchronous C# Apr 03, 2025 pm 02:57 PM

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.

Corak dalam C# Corak dalam C# Sep 03, 2024 pm 03:33 PM

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

Nombor Perdana dalam C# Nombor Perdana dalam C# Sep 03, 2024 pm 03:35 PM

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

Cara menukar format XML Cara menukar format XML Apr 03, 2025 am 08:42 AM

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.

See all articles