Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk mengklonkan senarai generik dengan cekap di C#?
pengklonan yang cekap dari senarai generik generik: dalam analisis -Depth analisis
Pernyataan Soalan:
di C#, bagaimana untuk mengklonkan senarai objek generik? Walaupun objek tunggal dalam senarai diklonkan, senarai itu sendiri tidak mempunyai kaedah "klon" terbina.
Kaedah 1: Jenis pengklonan
klon sangat mudah untuk senarai generik jenis nilai. Cukup buat senarai baru kandungan yang sama seperti senarai asal:
Kaedah 2: Salin jenis rujukansangat
<code class="language-csharp">List<你的类型> newList = new List<你的类型>(oldList);</code>Jika senarai generik mengandungi jenis rujukan dan perlu disalin secara mendalam (bukan replikasi cetek), anda boleh menggunakan kaedah antara muka berikut:
Kaedah ini memastikan bahawa semua objek dalam senarai klon sepenuhnya bebas dengan objek dalam senarai asal.
Kaedah 3: Gunakan pembina salinan untuk mengkloning ICloneable
<code class="language-csharp">List<ICloneable> oldList = new List<ICloneable>(); List<ICloneable> newList = new List<ICloneable>(oldList.Count); oldList.ForEach((item) => { newList.Add((ICloneable)item.Clone()); });</code>Apabila elemen senarai tidak direalisasikan
tetapi mempunyai pembina pendua, anda boleh menggunakan strategi pengklonan yang berbeza:
Kaedah ini menggunakan salinan contoh baru dalam senarai klon dengan pembina salinan.
Cadangan lain ICloneable
<code class="language-csharp">List<你的类型> oldList = new List<你的类型>(); List<你的类型> newList = new List<你的类型>(oldList.Count); oldList.ForEach((item) => { newList.Add(new 你的类型(item)); });</code>
Salin pembina: Untuk jenis dengan keadaan definisi yang jelas, pembina replikasi menyediakan kaedah yang lebih berkesan dan mudah untuk dijaga untuk membuat salinan kedalaman.
Kaedah kilang: Kaedah yang serupa dengan boleh digunakan untuk mengembalikan contoh -contoh baru jenis yang perlu diperlukan.
ICloneable
Mana -mana kaedah klon yang dicadangkan boleh dikemas dalam kaedah atau sambungan yang boleh diguna semula untuk meningkatkan kemudahan.
Atas ialah kandungan terperinci Bagaimana untuk mengklonkan senarai generik dengan cekap di C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!