Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Mencipta Salinan Benar Objek dalam C# Apabila Berurusan dengan Jenis Rujukan?

Bagaimanakah Saya Mencipta Salinan Benar Objek dalam C# Apabila Berurusan dengan Jenis Rujukan?

Barbara Streisand
Barbara Streisandasal
2025-01-13 12:33:52979semak imbas

How Do I Create True Copies of Objects in C# When Dealing with Reference Types?

Pengklonan objek dalam C#: Memahami jenis rujukan

Dalam C#, objek terutamanya jenis rujukan, yang bermaksud ia merujuk kepada lokasi memori tempat data mereka disimpan. Ini berbeza dengan jenis nilai, yang mengandungi datanya secara langsung dalam pembolehubahnya. Apabila salinan jenis rujukan dibuat, ia hanya mencipta salinan rujukan, bukan data sebenar yang ditunjukkannya.

Contoh: Memahami jenis rujukan

Pertimbangkan kod berikut:

<code class="language-csharp">public class MyClass
{
    public int val;
}

public struct myStruct
{
    public int val;
}

public class Program
{
    public static void Main(string[] args)
    {
        MyClass objectA = new MyClass();
        MyClass objectB = objectA;

        objectA.val = 10;
        objectB.val = 20;

        Console.WriteLine($"objectA.val = {objectA.val}");
        Console.WriteLine($"objectB.val = {objectB.val}");
    }
}</code>

Output kod ini menunjukkan bahawa walaupun terdapat perubahan, objekA dan objekB mempunyai nilai yang sama, menunjukkan bahawa ia merujuk kepada lokasi memori yang sama.

Klon objek jenis rujukan

Untuk mencipta salinan objek jenis rujukan yang berbeza daripada objek asal, anda perlu mengklon objek tersebut. Ini melibatkan mencipta objek baharu yang mempunyai sifat dan nilai yang sama seperti objek asal, tetapi disimpan di lokasi memori yang berasingan.

Gunakan antara muka ICloneable

Dalam C#, anda boleh menggunakan antara muka ICloneable untuk mengklon objek. Kelas yang melaksanakan antara muka ini menyediakan kaedah Klon yang mencipta salinan objek.

Berikut ialah contoh penggunaan antara muka ICloneable:

<code class="language-csharp">public class MyClass : ICloneable
{
    public string test;

    public object Clone()
    {
        return this.MemberwiseClone();
    }
}</code>
<code class="language-csharp">MyClass a = new MyClass();
MyClass b = (MyClass)a.Clone();</code>

Dalam contoh ini, kaedah Klon yang disediakan oleh antara muka ICloneable ditindih untuk mencipta objek baharu dengan sifat yang sama seperti objek asal, dengan berkesan mengklon objek.

Atas ialah kandungan terperinci Bagaimanakah Saya Mencipta Salinan Benar Objek dalam C# Apabila Berurusan dengan Jenis Rujukan?. 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