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
Mary-Kate Olsenasal
2025-01-13 12:14:44237semak imbas

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:

<code class="language-csharp">class myClass : ICloneable
{
    public String test;
    public object Clone()
    {
        return this.MemberwiseClone();
    }
}</code>

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

<code class="language-csharp">myClass a = new myClass();
myClass b = (myClass)a.Clone();</code>

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