Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk mengklonkan senarai generik dengan cekap di C#?

Bagaimana untuk mengklonkan senarai generik dengan cekap di C#?

Susan Sarandon
Susan Sarandonasal
2025-01-30 20:13:15550semak imbas

How to Efficiently Clone Generic Lists in 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 rujukan

sangat
<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

Walaupun antara muka boleh memberikan kemudahan, ia bergantung pada memastikan salinan semua ahli, yang mungkin membawa masalah. Anda boleh mempertimbangkan skim alternatif berikut:
<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!

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