Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mencipta Salinan Sebenar Objek dalam C#?

Bagaimanakah Saya Boleh Mencipta Salinan Sebenar Objek dalam C#?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-13 12:35:42398semak imbas

How Can I Create a True Copy of an Object in C#?

Menyalin objek dalam C#: analisis mendalam

Coretan kod berikut menunjukkan senario di mana dua rujukan objek objectA dan objectB menunjuk kepada tika yang sama bagi kelas MyClass. Ini adalah tingkah laku biasa untuk jenis rujukan dalam C# kerana ia hanya merujuk kepada lokasi memori dan bukannya mengandungi data itu sendiri. Walau bagaimanapun, dalam beberapa kes, adalah perlu untuk membuat salinan bebas sepenuhnya objek, menunjuk ke alamat memori yang berbeza.

Gunakan ICloneable untuk salinan cetek

Untuk melaksanakan penyalinan cetek (hanya menyalin keadaan ahli jenis bukan rujukan objek asal), C# menyediakan antara muka ICloneable. Melaksanakan antara muka ini membolehkan kelas untuk menentukan tingkah laku pengklonan tersuai.

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

MemberwiseClone melakukan salinan cetek objek, menyalin nilai semua ahli jenis bukan rujukan. Kami mencipta mekanisme pengklonan tersuai untuk kelas ICloneable dengan melaksanakan MemberwiseClone dan mengatasi kaedah Clonenya dengan MyClass .

Buat objek bebas

Untuk mencipta contoh kendiri MyClass, gunakan kaedah Clone:

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

Ini akan menjadikan objectB merujuk kepada kejadian baharu MyClass yang mempunyai alamat memori yang berbeza daripada objectA . Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa ini adalah salinan cetek, yang bermaksud bahawa mana-mana ahli jenis rujukan dalam objek masih menunjuk ke lokasi memori yang sama dengan objek asal. Untuk melaksanakan salinan mendalam, penyalinan lanjut ahli jenis rujukan biasanya diperlukan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencipta Salinan Sebenar 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