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
Lepaskan: 2025-01-13 12:35:42
asal
392 orang telah melayarinya

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

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!

sumber:php.cn
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