klon senarai generik dalam C#
Dalam C#, senarai objek generik klon adalah satu cabaran, kerana kelas yang dibina -in
tidak secara langsung "klon ()". Walau bagaimanapun, terdapat beberapa cara untuk mencapai fungsi ini.
List<T>
klon jenis nilai
Jika elemen senarai adalah jenis nilai, anda hanya boleh membuat senarai baru yang mengandungi elemen yang sama:
Gunakan jenis rujukan klon yang boleh diklonkan
<code class="language-csharp">List<MyValueType> newList = new List<MyValueType>(oldList);</code>
Jika elemen adalah jenis rujukan, dan anda perlu disalin dengan mendalam (iaitu, senarai baru dan unsur -unsurnya tidak ada kaitan dengan senarai asal), anda boleh menggunakan antara muka :
"iclonable" dalam kod di atas digantikan dengan jenis elemen sebenar 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>
ICloneable
tetapi mempunyai pembina salinan, anda boleh menggunakan kaedah berikut:
Kaedah ini menggunakan pembina salinan untuk membuat contoh baru setiap elemen.
ICloneable
kaedah klon tersuai
<code class="language-csharp">List<MyReferenceType> oldList = new List<MyReferenceType>(); List<MyReferenceType> newList = new List<MyReferenceType>(oldList.Count); oldList.ForEach(item => newList.Add(new MyReferenceType(item)));</code>
untuk kemudahan, anda boleh merangkum mana -mana kaedah ini dalam kaedah pengklonan tersuai:
Kaedah ini menerima senarai generik dan mengembalikan senarai klon baru, memilih kaedah pengklonan yang sesuai mengikut jenis elemen.
Atas ialah kandungan terperinci Bagaimana untuk mengklonkan senarai generik secara berkesan di C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!