Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Membuat Salinan Dalam atau Cetek Objek dalam C#?

Bagaimana untuk Membuat Salinan Dalam atau Cetek Objek dalam C#?

Mary-Kate Olsen
Lepaskan: 2025-01-13 12:14:44
asal
304 orang telah melayarinya

How to Create a Deep or Shallow Copy of an Object in C#?

Pengklonan objek dalam C#

Kod berikut menggambarkan perbezaan dalam tingkah laku jenis rujukan (kelas) dan jenis nilai (struktur) dalam C#. Secara khusus, persoalannya ialah: Bagaimanakah anda membuat salinan objek dalam C# yang menunjuk ke kawasan yang berbeza dalam ingatan?

Kelas dalam C# ialah jenis rujukan, yang bermaksud bahawa apabila anda menetapkan objek kelas kepada objek lain, anda sebenarnya memberikan rujukan kepada objek asas yang sama. Oleh itu, sebarang perubahan yang dibuat pada mana-mana objek akan menjejaskan kedua-dua kejadian. Dalam kod yang disediakan, apabila anda menetapkan objectA kepada objectB, anda mencipta alias objectA dan bukannya contoh yang berasingan.

Untuk mencipta salinan sebenar objek, anda perlu melaksanakan antara muka ICloneable dalam kelas anda. Antara muka ini menyediakan kaedah Clone(), yang mencipta tika baharu objek. Dengan mengatasi kaedah Clone() anda boleh mengawal proses pengklonan dan menentukan medan dan sifat yang harus disalin.

Dalam kod yang disediakan, coretan kod berikut menunjukkan cara melaksanakan pengklonan:

class myClass : ICloneable
{
    public String test;
    public object Clone()
    {
        return this.MemberwiseClone();
    }
}
Salin selepas log masuk

Setelah kelas melaksanakan ICloneable, anda boleh membuat salinan sebenar menggunakan kod berikut:

myClass a = new myClass();
myClass b = (myClass)a.Clone();
Salin selepas log masuk

Perlu diambil perhatian bahawa MemberwiseClone() mencipta salinan cetek, yang menyalin nilai semua medan dan sifat, tetapi tidak menyalin sebarang objek bersarang. Jika anda perlu membuat salinan dalam, anda perlu melaksanakan proses pengklonan tersuai yang mengambil kira objek bersarang.

Atas ialah kandungan terperinci Bagaimana untuk Membuat Salinan Dalam atau Cetek Objek 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan