Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Mencipta Salinan Benar Objek dalam C# Apabila Berurusan dengan Jenis Rujukan?
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!